summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2015-07-02 00:02:16 -0400
committerAnders Broman <a.broman58@gmail.com>2015-07-02 08:59:33 +0000
commit7d1a86d8c4023ba53ddf410e5820f22c8724d906 (patch)
treebcca6f1b15a84e8d76942ca25ba22e7985a89526
parentcc7dc0332ad061a457980febf62f0313788f28a9 (diff)
downloadwireshark-7d1a86d8c4023ba53ddf410e5820f22c8724d906.tar.gz
Have RPC dissector use real dissector tables for its subdissectors instead of a "homegrown" method.
Change-Id: I06d7d4e9747ed8593cf40506cae3a09ae237846b Reviewed-on: https://code.wireshark.org/review/9456 Petri-Dish: Michael Mann <mmann78@netscape.net> Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r--epan/dissectors/packet-bootparams.c2
-rw-r--r--epan/dissectors/packet-clearcase.c2
-rw-r--r--epan/dissectors/packet-fmp.c2
-rw-r--r--epan/dissectors/packet-fmp_notify.c2
-rw-r--r--epan/dissectors/packet-gluster_cli.c4
-rw-r--r--epan/dissectors/packet-gluster_pmap.c4
-rw-r--r--epan/dissectors/packet-glusterd.c10
-rw-r--r--epan/dissectors/packet-glusterfs.c4
-rw-r--r--epan/dissectors/packet-glusterfs_hndsk.c6
-rw-r--r--epan/dissectors/packet-hclnfsd.c2
-rw-r--r--epan/dissectors/packet-kadm5.c2
-rw-r--r--epan/dissectors/packet-klm.c2
-rw-r--r--epan/dissectors/packet-mount.c8
-rw-r--r--epan/dissectors/packet-nfs.c10
-rw-r--r--epan/dissectors/packet-nfsacl.c6
-rw-r--r--epan/dissectors/packet-nfsauth.c2
-rw-r--r--epan/dissectors/packet-nisplus.c4
-rw-r--r--epan/dissectors/packet-nlm.c8
-rw-r--r--epan/dissectors/packet-pcnfsd.c4
-rw-r--r--epan/dissectors/packet-portmap.c8
-rw-r--r--epan/dissectors/packet-rpc.c133
-rw-r--r--epan/dissectors/packet-rpc.h14
-rw-r--r--epan/dissectors/packet-rquota.c4
-rw-r--r--epan/dissectors/packet-rstat.c8
-rw-r--r--epan/dissectors/packet-rwall.c2
-rw-r--r--epan/dissectors/packet-sadmind.c6
-rw-r--r--epan/dissectors/packet-spray.c2
-rw-r--r--epan/dissectors/packet-stat-notify.c2
-rw-r--r--epan/dissectors/packet-stat.c2
-rw-r--r--epan/dissectors/packet-teklink.c2
-rw-r--r--epan/dissectors/packet-vxi11.c6
-rw-r--r--epan/dissectors/packet-ypbind.c4
-rw-r--r--epan/dissectors/packet-yppasswd.c2
-rw-r--r--epan/dissectors/packet-ypserv.c4
-rw-r--r--epan/dissectors/packet-ypxfr.c2
-rw-r--r--ui/gtk/rpc_stat.c12
36 files changed, 139 insertions, 158 deletions
diff --git a/epan/dissectors/packet-bootparams.c b/epan/dissectors/packet-bootparams.c
index f04f16baef..d3fde4dc21 100644
--- a/epan/dissectors/packet-bootparams.c
+++ b/epan/dissectors/packet-bootparams.c
@@ -193,7 +193,7 @@ proto_reg_handoff_bootparams(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_bootparams, BOOTPARAMS_PROGRAM, ett_bootparams);
/* Register the procedure tables */
- rpc_init_proc_table(BOOTPARAMS_PROGRAM, 1, bootparams1_proc, hf_bootparams_procedure_v1);
+ rpc_init_proc_table(proto_bootparams, BOOTPARAMS_PROGRAM, 1, bootparams1_proc, hf_bootparams_procedure_v1);
}
/*
diff --git a/epan/dissectors/packet-clearcase.c b/epan/dissectors/packet-clearcase.c
index 139aa7ed3d..00c86225c2 100644
--- a/epan/dissectors/packet-clearcase.c
+++ b/epan/dissectors/packet-clearcase.c
@@ -74,7 +74,7 @@ proto_reg_handoff_clearcase(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_clearcase, CLEARCASE_PROGRAM, ett_clearcase);
/* Register the procedure tables */
- rpc_init_proc_table(CLEARCASE_PROGRAM, 3, clearcase3_proc, hf_clearcase_procedure_v3);
+ rpc_init_proc_table(proto_clearcase, CLEARCASE_PROGRAM, 3, clearcase3_proc, hf_clearcase_procedure_v3);
}
/*
diff --git a/epan/dissectors/packet-fmp.c b/epan/dissectors/packet-fmp.c
index 1b4be65db9..569d7c9a88 100644
--- a/epan/dissectors/packet-fmp.c
+++ b/epan/dissectors/packet-fmp.c
@@ -2296,7 +2296,7 @@ proto_reg_handoff_fmp(void)
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);
+ rpc_init_proc_table(proto_fmp, 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 4035711b12..a1183a9ac2 100644
--- a/epan/dissectors/packet-fmp_notify.c
+++ b/epan/dissectors/packet-fmp_notify.c
@@ -611,7 +611,7 @@ proto_reg_handoff_fmp_notify(void)
rpc_init_prog(proto_fmp_notify, FMP_NOTIFY_PROG, ett_fmp_notify);
/* Register the procedure tables */
- rpc_init_proc_table(FMP_NOTIFY_PROG, FMP_NOTIFY_VERSION_2,
+ rpc_init_proc_table(proto_fmp_notify, FMP_NOTIFY_PROG, FMP_NOTIFY_VERSION_2,
fmp_notify2_proc,hf_fmp_notify_procedure);
}
diff --git a/epan/dissectors/packet-gluster_cli.c b/epan/dissectors/packet-gluster_cli.c
index 2e0756f951..2ae565d135 100644
--- a/epan/dissectors/packet-gluster_cli.c
+++ b/epan/dissectors/packet-gluster_cli.c
@@ -547,9 +547,9 @@ 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,
+ rpc_init_proc_table(proto_gluster_cli, GLUSTER_CLI_PROGRAM, 1, gluster_cli_proc,
hf_gluster_cli_proc);
- rpc_init_proc_table(GLUSTER_CLI_PROGRAM, 2, gluster_cli_2_proc,
+ rpc_init_proc_table(proto_gluster_cli, 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
index be12d63931..2ea0fc477c 100644
--- a/epan/dissectors/packet-gluster_pmap.c
+++ b/epan/dissectors/packet-gluster_pmap.c
@@ -214,7 +214,7 @@ 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,
+ rpc_init_proc_table(proto_gluster_pmap, GLUSTER_PMAP_PROGRAM, 1, gluster_pmap_proc,
hf_gluster_pmap_proc);
}
@@ -264,7 +264,7 @@ 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,
+ rpc_init_proc_table(proto_gluster_dump, 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
index c142d6b440..fd1bb263a1 100644
--- a/epan/dissectors/packet-glusterd.c
+++ b/epan/dissectors/packet-glusterd.c
@@ -874,17 +874,17 @@ 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,
+ rpc_init_proc_table(proto_gd_mgmt, GD_MGMT_PROGRAM, 1, gd_mgmt_proc, hf_gd_mgmt_proc);
+ rpc_init_proc_table(proto_gd_mgmt, GD_MGMT_PROGRAM, 2, gd_mgmt_2_proc,
hf_gd_mgmt_2_proc);
- rpc_init_proc_table(GD_MGMT_PROGRAM, 3, gd_mgmt_3_proc,
+ rpc_init_proc_table(proto_gd_mgmt, GD_MGMT_PROGRAM, 3, gd_mgmt_3_proc,
hf_gd_mgmt_3_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,
+ rpc_init_proc_table(proto_gd_brick, 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,
+ rpc_init_proc_table(proto_gd_friend, 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
index e072143d06..1d70f93d2c 100644
--- a/epan/dissectors/packet-glusterfs.c
+++ b/epan/dissectors/packet-glusterfs.c
@@ -2855,9 +2855,9 @@ 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,
+ rpc_init_proc_table(proto_glusterfs, 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,
+ rpc_init_proc_table(proto_glusterfs, 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
index bc6f407afa..a0f5b64a14 100644
--- a/epan/dissectors/packet-glusterfs_hndsk.c
+++ b/epan/dissectors/packet-glusterfs_hndsk.c
@@ -290,9 +290,9 @@ 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,
+ rpc_init_proc_table(proto_gluster_hndsk, GLUSTER_HNDSK_PROGRAM, 1, gluster_hndsk_proc,
hf_gluster_hndsk_proc);
- rpc_init_proc_table(GLUSTER_HNDSK_PROGRAM, 2, gluster_hndsk_2_proc,
+ rpc_init_proc_table(proto_gluster_hndsk, GLUSTER_HNDSK_PROGRAM, 2, gluster_hndsk_2_proc,
hf_gluster_hndsk_proc);
}
@@ -339,7 +339,7 @@ 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,
+ rpc_init_proc_table(proto_gluster_cbk, GLUSTER_CBK_PROGRAM, 1, gluster_cbk_proc,
hf_gluster_cbk_proc);
}
diff --git a/epan/dissectors/packet-hclnfsd.c b/epan/dissectors/packet-hclnfsd.c
index c4a249987d..e0aeab36d8 100644
--- a/epan/dissectors/packet-hclnfsd.c
+++ b/epan/dissectors/packet-hclnfsd.c
@@ -906,7 +906,7 @@ proto_reg_handoff_hclnfsd(void)
rpc_init_prog(proto_hclnfsd, HCLNFSD_PROGRAM, ett_hclnfsd);
/* Register the procedure tables */
- rpc_init_proc_table(HCLNFSD_PROGRAM, 1, hclnfsd1_proc, hf_hclnfsd_procedure_v1);
+ rpc_init_proc_table(proto_hclnfsd, HCLNFSD_PROGRAM, 1, hclnfsd1_proc, hf_hclnfsd_procedure_v1);
}
/*
diff --git a/epan/dissectors/packet-kadm5.c b/epan/dissectors/packet-kadm5.c
index d0b1a23bf1..55fc371dcc 100644
--- a/epan/dissectors/packet-kadm5.c
+++ b/epan/dissectors/packet-kadm5.c
@@ -140,7 +140,7 @@ proto_reg_handoff_kadm5(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_kadm5, KADM5_PROGRAM, ett_kadm5);
/* Register the procedure tables */
- rpc_init_proc_table(KADM5_PROGRAM, 2, kadm5_v2_proc,
+ rpc_init_proc_table(proto_kadm5, KADM5_PROGRAM, 2, kadm5_v2_proc,
hf_kadm5_procedure_v2);
}
diff --git a/epan/dissectors/packet-klm.c b/epan/dissectors/packet-klm.c
index 5538cd67dd..29fbee91df 100644
--- a/epan/dissectors/packet-klm.c
+++ b/epan/dissectors/packet-klm.c
@@ -256,7 +256,7 @@ proto_reg_handoff_klm(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_klm, KLM_PROGRAM, ett_klm);
/* Register the procedure tables */
- rpc_init_proc_table(KLM_PROGRAM, 1, klm1_proc, hf_klm_procedure_v1);
+ rpc_init_proc_table(proto_klm, KLM_PROGRAM, 1, klm1_proc, hf_klm_procedure_v1);
}
/*
diff --git a/epan/dissectors/packet-mount.c b/epan/dissectors/packet-mount.c
index cb3dec6e29..3ffdeba210 100644
--- a/epan/dissectors/packet-mount.c
+++ b/epan/dissectors/packet-mount.c
@@ -1028,10 +1028,10 @@ proto_reg_handoff_mount(void)
rpc_init_prog(proto_mount, MOUNT_PROGRAM, ett_mount);
rpc_init_prog(proto_sgi_mount, SGI_MOUNT_PROGRAM, ett_mount);
/* Register the procedure tables */
- rpc_init_proc_table(MOUNT_PROGRAM, 1, mount1_proc, hf_mount_procedure_v1);
- rpc_init_proc_table(MOUNT_PROGRAM, 2, mount2_proc, hf_mount_procedure_v2);
- rpc_init_proc_table(MOUNT_PROGRAM, 3, mount3_proc, hf_mount_procedure_v3);
- rpc_init_proc_table(SGI_MOUNT_PROGRAM, 1, sgi_mount1_proc, hf_sgi_mount_procedure_v1);
+ rpc_init_proc_table(proto_mount, MOUNT_PROGRAM, 1, mount1_proc, hf_mount_procedure_v1);
+ rpc_init_proc_table(proto_mount, MOUNT_PROGRAM, 2, mount2_proc, hf_mount_procedure_v2);
+ rpc_init_proc_table(proto_mount, MOUNT_PROGRAM, 3, mount3_proc, hf_mount_procedure_v3);
+ rpc_init_proc_table(proto_sgi_mount, SGI_MOUNT_PROGRAM, 1, sgi_mount1_proc, hf_sgi_mount_procedure_v1);
}
/*
diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c
index 1e7ef7cd95..8f21f497db 100644
--- a/epan/dissectors/packet-nfs.c
+++ b/epan/dissectors/packet-nfs.c
@@ -10300,8 +10300,8 @@ void reg_callback(int cbprog)
* but some Linux kernels set this field to 1. "Temporarily",
* accommodate these servers.
*/
- rpc_init_proc_table(cbprog, 1, nfs_cb_proc, hf_nfs4_cb_procedure);
- rpc_init_proc_table(cbprog, 4, nfs_cb_proc, hf_nfs4_cb_procedure);
+ rpc_init_proc_table(proto_nfs, cbprog, 1, nfs_cb_proc, hf_nfs4_cb_procedure);
+ rpc_init_proc_table(proto_nfs, cbprog, 4, nfs_cb_proc, hf_nfs4_cb_procedure);
}
void
@@ -12661,9 +12661,9 @@ proto_reg_handoff_nfs(void)
rpc_init_prog(proto_nfs, NFS_PROGRAM, ett_nfs);
/* Register the procedure tables */
- rpc_init_proc_table(NFS_PROGRAM, 2, nfs2_proc, hf_nfs2_procedure);
- rpc_init_proc_table(NFS_PROGRAM, 3, nfs3_proc, hf_nfs3_procedure);
- rpc_init_proc_table(NFS_PROGRAM, 4, nfs4_proc, hf_nfs4_procedure);
+ rpc_init_proc_table(proto_nfs, NFS_PROGRAM, 2, nfs2_proc, hf_nfs2_procedure);
+ rpc_init_proc_table(proto_nfs, NFS_PROGRAM, 3, nfs3_proc, hf_nfs3_procedure);
+ rpc_init_proc_table(proto_nfs, NFS_PROGRAM, 4, nfs4_proc, hf_nfs4_procedure);
fhandle_handle = create_dissector_handle(dissect_fhandle_data_SVR4, proto_nfs);
dissector_add_uint("nfs_fhandle.type", FHT_SVR4, fhandle_handle);
diff --git a/epan/dissectors/packet-nfsacl.c b/epan/dissectors/packet-nfsacl.c
index f0494a42ee..d32f0dce71 100644
--- a/epan/dissectors/packet-nfsacl.c
+++ b/epan/dissectors/packet-nfsacl.c
@@ -590,9 +590,9 @@ proto_reg_handoff_nfsacl(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_nfsacl, NFSACL_PROGRAM, ett_nfsacl);
/* Register the procedure tables */
- rpc_init_proc_table(NFSACL_PROGRAM, 1, nfsacl1_proc, hf_nfsacl_procedure_v1);
- rpc_init_proc_table(NFSACL_PROGRAM, 2, nfsacl2_proc, hf_nfsacl_procedure_v2);
- rpc_init_proc_table(NFSACL_PROGRAM, 3, nfsacl3_proc, hf_nfsacl_procedure_v3);
+ rpc_init_proc_table(proto_nfsacl, NFSACL_PROGRAM, 1, nfsacl1_proc, hf_nfsacl_procedure_v1);
+ rpc_init_proc_table(proto_nfsacl, NFSACL_PROGRAM, 2, nfsacl2_proc, hf_nfsacl_procedure_v2);
+ rpc_init_proc_table(proto_nfsacl, NFSACL_PROGRAM, 3, nfsacl3_proc, hf_nfsacl_procedure_v3);
}
/*
diff --git a/epan/dissectors/packet-nfsauth.c b/epan/dissectors/packet-nfsauth.c
index b93ea718a1..9ff54e2d31 100644
--- a/epan/dissectors/packet-nfsauth.c
+++ b/epan/dissectors/packet-nfsauth.c
@@ -78,7 +78,7 @@ proto_reg_handoff_nfsauth(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_nfsauth, NFSAUTH_PROGRAM, ett_nfsauth);
/* Register the procedure tables */
- rpc_init_proc_table(NFSAUTH_PROGRAM, 1, nfsauth1_proc, hf_nfsauth_procedure_v1);
+ rpc_init_proc_table(proto_nfsauth, NFSAUTH_PROGRAM, 1, nfsauth1_proc, hf_nfsauth_procedure_v1);
}
/*
diff --git a/epan/dissectors/packet-nisplus.c b/epan/dissectors/packet-nisplus.c
index d2bba0af28..ee4296fb54 100644
--- a/epan/dissectors/packet-nisplus.c
+++ b/epan/dissectors/packet-nisplus.c
@@ -1834,7 +1834,7 @@ proto_reg_handoff_nis(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_nisplus, NIS_PROGRAM, ett_nisplus);
/* Register the procedure tables */
- rpc_init_proc_table(NIS_PROGRAM, 3, nisplus3_proc, hf_nisplus_procedure_v3);
+ rpc_init_proc_table(proto_nisplus, NIS_PROGRAM, 3, nisplus3_proc, hf_nisplus_procedure_v3);
}
@@ -1934,7 +1934,7 @@ proto_reg_handoff_niscb(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_nispluscb, CB_PROGRAM, ett_nispluscb);
/* Register the procedure tables */
- rpc_init_proc_table(CB_PROGRAM, 1, cb1_proc, hf_nispluscb_procedure_v1);
+ rpc_init_proc_table(proto_nispluscb, CB_PROGRAM, 1, cb1_proc, hf_nispluscb_procedure_v1);
}
/*
diff --git a/epan/dissectors/packet-nlm.c b/epan/dissectors/packet-nlm.c
index ef93817be2..c5b80aea66 100644
--- a/epan/dissectors/packet-nlm.c
+++ b/epan/dissectors/packet-nlm.c
@@ -1229,10 +1229,10 @@ proto_reg_handoff_nlm(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_nlm, NLM_PROGRAM, ett_nlm);
/* Register the procedure tables */
- rpc_init_proc_table(NLM_PROGRAM, 1, nlm1_proc, hf_nlm_procedure_v1);
- rpc_init_proc_table(NLM_PROGRAM, 2, nlm2_proc, hf_nlm_procedure_v2);
- rpc_init_proc_table(NLM_PROGRAM, 3, nlm3_proc, hf_nlm_procedure_v3);
- rpc_init_proc_table(NLM_PROGRAM, 4, nlm4_proc, hf_nlm_procedure_v4);
+ rpc_init_proc_table(proto_nlm, NLM_PROGRAM, 1, nlm1_proc, hf_nlm_procedure_v1);
+ rpc_init_proc_table(proto_nlm, NLM_PROGRAM, 2, nlm2_proc, hf_nlm_procedure_v2);
+ rpc_init_proc_table(proto_nlm, NLM_PROGRAM, 3, nlm3_proc, hf_nlm_procedure_v3);
+ rpc_init_proc_table(proto_nlm, NLM_PROGRAM, 4, nlm4_proc, hf_nlm_procedure_v4);
}
/*
diff --git a/epan/dissectors/packet-pcnfsd.c b/epan/dissectors/packet-pcnfsd.c
index 0e7602e981..758c410b34 100644
--- a/epan/dissectors/packet-pcnfsd.c
+++ b/epan/dissectors/packet-pcnfsd.c
@@ -418,8 +418,8 @@ proto_reg_handoff_pcnfsd(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_pcnfsd, PCNFSD_PROGRAM, ett_pcnfsd);
/* Register the procedure tables */
- rpc_init_proc_table(PCNFSD_PROGRAM, 1, pcnfsd1_proc, hf_pcnfsd_procedure_v1);
- rpc_init_proc_table(PCNFSD_PROGRAM, 2, pcnfsd2_proc, hf_pcnfsd_procedure_v2);
+ rpc_init_proc_table(proto_pcnfsd, PCNFSD_PROGRAM, 1, pcnfsd1_proc, hf_pcnfsd_procedure_v1);
+ rpc_init_proc_table(proto_pcnfsd, PCNFSD_PROGRAM, 2, pcnfsd2_proc, hf_pcnfsd_procedure_v2);
}
/*
diff --git a/epan/dissectors/packet-portmap.c b/epan/dissectors/packet-portmap.c
index 86d5c2f78b..ede71e2729 100644
--- a/epan/dissectors/packet-portmap.c
+++ b/epan/dissectors/packet-portmap.c
@@ -634,10 +634,10 @@ proto_reg_handoff_portmap(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_portmap, PORTMAP_PROGRAM, ett_portmap);
/* Register the procedure tables */
- rpc_init_proc_table(PORTMAP_PROGRAM, 1, portmap1_proc, hf_portmap_procedure_v1);
- rpc_init_proc_table(PORTMAP_PROGRAM, 2, portmap2_proc, hf_portmap_procedure_v2);
- rpc_init_proc_table(PORTMAP_PROGRAM, 3, portmap3_proc, hf_portmap_procedure_v3);
- rpc_init_proc_table(PORTMAP_PROGRAM, 4, portmap4_proc, hf_portmap_procedure_v4);
+ rpc_init_proc_table(proto_portmap, PORTMAP_PROGRAM, 1, portmap1_proc, hf_portmap_procedure_v1);
+ rpc_init_proc_table(proto_portmap, PORTMAP_PROGRAM, 2, portmap2_proc, hf_portmap_procedure_v2);
+ rpc_init_proc_table(proto_portmap, PORTMAP_PROGRAM, 3, portmap3_proc, hf_portmap_procedure_v3);
+ rpc_init_proc_table(proto_portmap, PORTMAP_PROGRAM, 4, portmap4_proc, hf_portmap_procedure_v4);
rpc_handle = find_dissector("rpc");
}
diff --git a/epan/dissectors/packet-rpc.c b/epan/dissectors/packet-rpc.c
index 9e2c666233..c4347ef374 100644
--- a/epan/dissectors/packet-rpc.c
+++ b/epan/dissectors/packet-rpc.c
@@ -280,6 +280,10 @@ static dissector_handle_t rpc_handle;
static dissector_handle_t gssapi_handle;
static dissector_handle_t data_handle;
+static dissector_table_t subdissector_call_table;
+static dissector_table_t subdissector_reply_table;
+
+
static guint max_rpc_tcp_pdu_size = 4 * 1024 * 1024;
static const fragment_items rpc_frag_items = {
@@ -303,9 +307,6 @@ static const fragment_items rpc_frag_items = {
/* Hash table with info on RPC program numbers */
GHashTable *rpc_progs = NULL;
-/* Hash table with info on RPC procedure numbers */
-GHashTable *rpc_procs = NULL;
-
typedef gboolean (*rec_dissector_t)(tvbuff_t *, packet_info *, proto_tree *,
tvbuff_t *, fragment_head *, gboolean, guint32, gboolean);
@@ -319,16 +320,16 @@ static guint32 rpc_version = 0;
static gint32 rpc_min_proc = -1;
static gint32 rpc_max_proc = -1;
-static void *
-rpcstat_find_procs(gpointer *key, gpointer *value _U_, gpointer *user_data _U_)
+static void
+rpcstat_find_procs(const gchar *table_name _U_, ftenum_t selector_type _U_, gpointer key, gpointer value _U_, gpointer user_data _U_)
{
rpc_proc_info_key *k = (rpc_proc_info_key *)key;
if (k->prog != rpc_program) {
- return NULL;
+ return;
}
if (k->vers != rpc_version) {
- return NULL;
+ return;
}
if (rpc_min_proc == -1) {
rpc_min_proc = k->proc;
@@ -340,8 +341,6 @@ rpcstat_find_procs(gpointer *key, gpointer *value _U_, gpointer *user_data _U_)
if ((gint32)k->proc > rpc_max_proc) {
rpc_max_proc = k->proc;
}
-
- return NULL;
}
static void
@@ -417,7 +416,9 @@ rpcstat_param(register_srt_t* srt, const char* opt_arg, char** err)
rpc_version = tap_data->version;
rpc_min_proc = -1;
rpc_max_proc = -1;
- g_hash_table_foreach(rpc_procs, (GHFunc)rpcstat_find_procs, NULL);
+ /* Need to run over both dissector tables */
+ dissector_table_foreach ("rpc.call", rpcstat_find_procs, NULL);
+ dissector_table_foreach ("rpc.reply", rpcstat_find_procs, NULL);
tap_data->num_procedures = rpc_max_proc+1;
if (rpc_min_proc == -1) {
@@ -465,7 +466,7 @@ rpc_proc_hash(gconstpointer k)
/* insert some entries */
void
-rpc_init_proc_table(guint prog, guint vers, const vsff *proc_table,
+rpc_init_proc_table(int proto, guint prog, guint vers, const vsff *proc_table,
int procedure_hf)
{
rpc_prog_info_value *rpc_prog;
@@ -482,20 +483,24 @@ rpc_init_proc_table(guint prog, guint vers, const vsff *proc_table,
g_array_insert_val(rpc_prog->procedure_hfs, vers, procedure_hf);
for (proc = proc_table ; proc->strptr!=NULL; proc++) {
- rpc_proc_info_key *key;
- rpc_proc_info_value *value;
+ rpc_proc_info_key key;
- key = (rpc_proc_info_key *) g_malloc(sizeof(rpc_proc_info_key));
- key->prog = prog;
- key->vers = vers;
- key->proc = proc->value;
+ key.prog = prog;
+ key.vers = vers;
+ key.proc = proc->value;
+
+ if (proc->dissect_call != NULL)
+ {
+ dissector_add_custom_table_handle("rpc.call", g_memdup(&key, sizeof(rpc_proc_info_key)),
+ new_create_dissector_handle_with_name(proc->dissect_call, proto, proc->strptr));
+ }
- value = (rpc_proc_info_value *) g_malloc(sizeof(rpc_proc_info_value));
- value->name = proc->strptr;
- value->dissect_call = proc->dissect_call;
- value->dissect_reply = proc->dissect_reply;
+ if (proc->dissect_reply == NULL)
+ {
+ dissector_add_custom_table_handle("rpc.reply", g_memdup(&key, sizeof(rpc_proc_info_key)),
+ new_create_dissector_handle_with_name(proc->dissect_reply, proto, proc->strptr));
+ }
- g_hash_table_insert(rpc_procs,key,value);
}
}
@@ -505,15 +510,18 @@ const char *
rpc_proc_name(guint32 prog, guint32 vers, guint32 proc)
{
rpc_proc_info_key key;
- rpc_proc_info_value *value;
+ dissector_handle_t dissect_function;
const char *procname;
key.prog = prog;
key.vers = vers;
key.proc = proc;
- if ((value = (rpc_proc_info_value *)g_hash_table_lookup(rpc_procs,&key)) != NULL)
- procname = value->name;
+ /* Look at both tables for possible procedure names */
+ if ((dissect_function = dissector_get_custom_table_handle(subdissector_call_table, &key)) != NULL)
+ procname = dissector_handle_get_dissector_name(dissect_function);
+ else if ((dissect_function = dissector_get_custom_table_handle(subdissector_reply_table, &key)) != NULL)
+ procname = dissector_handle_get_dissector_name(dissect_function);
else {
/* happens only with strange program versions or
non-existing dissectors */
@@ -1507,7 +1515,7 @@ dissect_auth_gssapi_data(tvbuff_t *tvb, proto_tree *tree, int offset)
static int
call_dissect_function(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, new_dissector_t dissect_function, const char *progname,
+ int offset, dissector_handle_t dissect_function, const char *progname,
rpc_call_info_value *rpc_call)
{
const char *saved_proto;
@@ -1521,7 +1529,7 @@ call_dissect_function(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* call the dissector for the next level */
next_tvb = tvb_new_subset_remaining(tvb, offset);
- offset += dissect_function(next_tvb, pinfo, tree, rpc_call);
+ offset += call_dissector_with_data(dissect_function, next_tvb, pinfo, tree, rpc_call);
/* restore the protocol name */
pinfo->current_proto = saved_proto;
@@ -1534,7 +1542,7 @@ call_dissect_function(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static int
dissect_rpc_authgss_integ_data(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, int offset,
- new_dissector_t dissect_function,
+ dissector_handle_t dissect_function,
const char *progname, rpc_call_info_value *rpc_call)
{
guint32 length, rounded_length, seq;
@@ -1616,17 +1624,15 @@ dissect_rpc_indir_call(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
conversation_t* conversation;
static address null_address = { AT_NONE, 0, NULL };
rpc_proc_info_key key;
- rpc_proc_info_value *value;
rpc_call_info_value *rpc_call;
- new_dissector_t dissect_function = NULL;
+ dissector_handle_t dissect_function = NULL;
rpc_conv_info_t *rpc_conv_info=NULL;
guint32 xid;
key.prog = prog;
key.vers = vers;
key.proc = proc;
- if ((value = (rpc_proc_info_value *)g_hash_table_lookup(rpc_procs,&key)) != NULL) {
- dissect_function = value->dissect_call;
+ if ((dissect_function = dissector_get_custom_table_handle(subdissector_call_table, &key)) != NULL) {
/* Keep track of the address whence the call came, and the
port to which the call is being sent, so that we can
@@ -1726,7 +1732,6 @@ dissect_rpc_indir_call(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
rpc_call->flavor = FLAVOR_NOT_GSSAPI;
rpc_call->gss_proc = 0;
rpc_call->gss_svc = 0;
- rpc_call->proc_info = (rpc_proc_info_value*)wmem_memdup(wmem_file_scope(), value, sizeof(*value));
/* store it */
wmem_tree_insert32(rpc_conv_info->xids, xid, (void *)rpc_call);
}
@@ -1765,8 +1770,9 @@ dissect_rpc_indir_reply(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static address null_address = { AT_NONE, 0, NULL };
rpc_call_info_value *rpc_call;
const char *procname=NULL;
- new_dissector_t dissect_function = NULL;
+ dissector_handle_t dissect_function = NULL;
rpc_conv_info_t *rpc_conv_info=NULL;
+ rpc_proc_info_key key;
guint32 xid;
/* Look for the matching call in the xid table.
@@ -1835,19 +1841,15 @@ dissect_rpc_indir_reply(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
return offset;
}
- if (rpc_call->proc_info != NULL) {
- dissect_function = rpc_call->proc_info->dissect_reply;
- if (rpc_call->proc_info->name != NULL) {
- procname = rpc_call->proc_info->name;
- }
- else {
- procname=wmem_strdup_printf(wmem_packet_scope(), "proc-%u", rpc_call->proc);
- }
+ key.prog = rpc_call->prog;
+ key.vers = rpc_call->vers;
+ key.proc = rpc_call->proc;
+
+ dissect_function = dissector_get_custom_table_handle(subdissector_reply_table, &key);
+ if (dissect_function != NULL) {
+ procname = dissector_handle_get_dissector_name(dissect_function);
}
else {
-#if 0
- dissect_function = NULL;
-#endif
procname=wmem_strdup_printf(wmem_packet_scope(), "proc-%u", rpc_call->proc);
}
@@ -1938,7 +1940,7 @@ make_fake_rpc_prog_if_needed (guint32 *prpc_prog_key, guint prog_ver)
proto_rpc_unknown_program = proto_register_protocol(NAME, Name, name);
rpc_init_prog(proto_rpc_unknown_program, *prpc_prog_key, ett_rpc_unknown_program);
- rpc_init_proc_table(*prpc_prog_key, prog_ver, unknown_proc, hf_rpc_procedure);
+ rpc_init_proc_table(proto_rpc, *prpc_prog_key, prog_ver, unknown_proc, hf_rpc_procedure);
}
}
@@ -1987,12 +1989,11 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
int offset = (is_tcp && tvb == frag_tvb) ? 4 : 0;
rpc_proc_info_key key;
- rpc_proc_info_value *value = NULL;
conversation_t* conversation;
static address null_address = { AT_NONE, 0, NULL };
nstime_t ns;
- new_dissector_t dissect_function = NULL;
+ dissector_handle_t dissect_function = NULL;
gboolean dissect_rpc_flag = TRUE;
rpc_conv_info_t *rpc_conv_info=NULL;
@@ -2244,16 +2245,12 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
key.vers = vers;
key.proc = proc;
- if ((value = (rpc_proc_info_value *)g_hash_table_lookup(rpc_procs,&key)) != NULL) {
- dissect_function = value->dissect_call;
- procname = value->name;
+ if ((dissect_function = dissector_get_custom_table_handle(subdissector_call_table, &key)) != NULL) {
+ procname = dissector_handle_get_dissector_name(dissect_function);
}
else {
/* happens only with strange program versions or
non-existing dissectors */
-#if 0
- dissect_function = NULL;
-#endif
procname=wmem_strdup_printf(wmem_packet_scope(), "proc-%u", proc);
}
@@ -2432,7 +2429,6 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
rpc_call->flavor = flavor;
rpc_call->gss_proc = gss_proc;
rpc_call->gss_svc = gss_svc;
- rpc_call->proc_info = value ? (rpc_proc_info_value*)wmem_memdup(wmem_file_scope(), value, sizeof(*value)) : NULL;
rpc_call->req_time = pinfo->fd->abs_ts;
/* store it */
@@ -2469,27 +2465,19 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
case RPC_REPLY:
/* we know already the type from the calling routine,
and we already have "rpc_call" set above. */
- prog = rpc_call->prog;
- vers = rpc_call->vers;
- proc = rpc_call->proc;
+ key.prog = prog = rpc_call->prog;
+ key.vers = vers = rpc_call->vers;
+ key.proc = proc = rpc_call->proc;
flavor = rpc_call->flavor;
gss_proc = rpc_call->gss_proc;
gss_svc = rpc_call->gss_svc;
- if (rpc_call->proc_info != NULL) {
- dissect_function = rpc_call->proc_info->dissect_reply;
- if (rpc_call->proc_info->name != NULL) {
- procname = rpc_call->proc_info->name;
- }
- else {
- procname=wmem_strdup_printf(wmem_packet_scope(), "proc-%u", proc);
- }
+ dissect_function = dissector_get_custom_table_handle(subdissector_reply_table, &key);
+ if (dissect_function != NULL) {
+ procname = dissector_handle_get_dissector_name(dissect_function);
}
else {
-#if 0
- dissect_function = NULL;
-#endif
- procname=wmem_strdup_printf(wmem_packet_scope(), "proc-%u", proc);
+ procname=wmem_strdup_printf(wmem_packet_scope(), "proc-%u", rpc_call->proc);
}
/*
@@ -4090,6 +4078,9 @@ proto_register_rpc(void)
proto_rpc = proto_register_protocol("Remote Procedure Call", "RPC", "rpc");
+ subdissector_call_table = register_custom_dissector_table("rpc.call", "RPC Call Functions", rpc_proc_hash, rpc_proc_equal);
+ subdissector_reply_table = register_custom_dissector_table("rpc.reply", "RPC Reply Functions", rpc_proc_hash, rpc_proc_equal);
+
/* this is a dummy dissector for all those unknown rpc programs */
proto_register_field_array(proto_rpc, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
@@ -4143,8 +4134,6 @@ proto_register_rpc(void)
*/
rpc_progs = g_hash_table_new_full(g_int_hash, g_int_equal,
g_free, rpc_prog_free_val);
- rpc_procs = g_hash_table_new_full(rpc_proc_hash, rpc_proc_equal,
- g_free, g_free);
authgss_contexts=wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
}
diff --git a/epan/dissectors/packet-rpc.h b/epan/dissectors/packet-rpc.h
index d0c9236f87..7c42a3bed7 100644
--- a/epan/dissectors/packet-rpc.h
+++ b/epan/dissectors/packet-rpc.h
@@ -124,7 +124,6 @@ typedef struct _rpc_call_info_value {
flavor_t flavor;
guint32 gss_proc;
guint32 gss_svc;
- struct _rpc_proc_info_value* proc_info;
gboolean request; /* Is this a request or not ?*/
nstime_t req_time;
void *private_data;
@@ -142,7 +141,7 @@ typedef struct _vsff {
extern const value_string rpc_auth_flavor[];
-WS_DLL_PUBLIC void rpc_init_proc_table(guint prog, guint vers, const vsff *proc_table,
+WS_DLL_PUBLIC void rpc_init_proc_table(int proto, guint prog, guint vers, const vsff *proc_table,
int procedure_hf);
WS_DLL_PUBLIC void rpc_init_prog(int proto, guint32 prog, int ett);
WS_DLL_PUBLIC const char *rpc_prog_name(guint32 prog);
@@ -206,17 +205,6 @@ typedef struct _rpc_proc_info_key {
guint32 proc;
} rpc_proc_info_key;
-typedef struct _rpc_proc_info_value {
- const gchar *name;
- new_dissector_t dissect_call;
- new_dissector_t dissect_reply;
-} rpc_proc_info_value;
-
-/* rpc_procs is also used in tap. With MSVC and a
- * libwireshark.dll, we need a special declaration.
- */
-WS_DLL_PUBLIC GHashTable *rpc_procs;
-
typedef struct rpcstat_tap_data
{
const char *prog;
diff --git a/epan/dissectors/packet-rquota.c b/epan/dissectors/packet-rquota.c
index 2fbb91c3c7..03302753d8 100644
--- a/epan/dissectors/packet-rquota.c
+++ b/epan/dissectors/packet-rquota.c
@@ -299,8 +299,8 @@ proto_reg_handoff_rquota(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_rquota, RQUOTA_PROGRAM, ett_rquota);
/* Register the procedure tables */
- rpc_init_proc_table(RQUOTA_PROGRAM, 1, rquota1_proc, hf_rquota_procedure_v1);
- rpc_init_proc_table(RQUOTA_PROGRAM, 2, rquota2_proc, hf_rquota_procedure_v2);
+ rpc_init_proc_table(proto_rquota, RQUOTA_PROGRAM, 1, rquota1_proc, hf_rquota_procedure_v1);
+ rpc_init_proc_table(proto_rquota, RQUOTA_PROGRAM, 2, rquota2_proc, hf_rquota_procedure_v2);
}
/*
diff --git a/epan/dissectors/packet-rstat.c b/epan/dissectors/packet-rstat.c
index 143a381cda..ab719a01cd 100644
--- a/epan/dissectors/packet-rstat.c
+++ b/epan/dissectors/packet-rstat.c
@@ -142,10 +142,10 @@ proto_reg_handoff_rstat(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_rstat, RSTAT_PROGRAM, ett_rstat);
/* Register the procedure tables */
- rpc_init_proc_table(RSTAT_PROGRAM, 1, rstat1_proc, hf_rstat_procedure_v1);
- rpc_init_proc_table(RSTAT_PROGRAM, 2, rstat2_proc, hf_rstat_procedure_v2);
- rpc_init_proc_table(RSTAT_PROGRAM, 3, rstat3_proc, hf_rstat_procedure_v3);
- rpc_init_proc_table(RSTAT_PROGRAM, 4, rstat4_proc, hf_rstat_procedure_v4);
+ rpc_init_proc_table(proto_rstat, RSTAT_PROGRAM, 1, rstat1_proc, hf_rstat_procedure_v1);
+ rpc_init_proc_table(proto_rstat, RSTAT_PROGRAM, 2, rstat2_proc, hf_rstat_procedure_v2);
+ rpc_init_proc_table(proto_rstat, RSTAT_PROGRAM, 3, rstat3_proc, hf_rstat_procedure_v3);
+ rpc_init_proc_table(proto_rstat, RSTAT_PROGRAM, 4, rstat4_proc, hf_rstat_procedure_v4);
}
/*
diff --git a/epan/dissectors/packet-rwall.c b/epan/dissectors/packet-rwall.c
index c6a6306370..575cac1655 100644
--- a/epan/dissectors/packet-rwall.c
+++ b/epan/dissectors/packet-rwall.c
@@ -88,7 +88,7 @@ proto_reg_handoff_rwall(void)
/* Register the protocol as RPC */
rpc_init_prog(hfi_rwall->id, RWALL_PROGRAM, ett_rwall);
/* Register the procedure tables */
- rpc_init_proc_table(RWALL_PROGRAM, 1, rwall1_proc, hfi_rwall_procedure_v1.id);
+ rpc_init_proc_table(hfi_rwall->id, RWALL_PROGRAM, 1, rwall1_proc, hfi_rwall_procedure_v1.id);
}
/*
diff --git a/epan/dissectors/packet-sadmind.c b/epan/dissectors/packet-sadmind.c
index 70b9e4a258..7f9233971d 100644
--- a/epan/dissectors/packet-sadmind.c
+++ b/epan/dissectors/packet-sadmind.c
@@ -102,9 +102,9 @@ proto_reg_handoff_sadmind(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_sadmind, SADMIND_PROGRAM, ett_sadmind);
/* Register the procedure tables */
- rpc_init_proc_table(SADMIND_PROGRAM, 1, sadmind1_proc, hf_sadmind_procedure_v1);
- rpc_init_proc_table(SADMIND_PROGRAM, 2, sadmind2_proc, hf_sadmind_procedure_v2);
- rpc_init_proc_table(SADMIND_PROGRAM, 3, sadmind3_proc, hf_sadmind_procedure_v3);
+ rpc_init_proc_table(proto_sadmind, SADMIND_PROGRAM, 1, sadmind1_proc, hf_sadmind_procedure_v1);
+ rpc_init_proc_table(proto_sadmind, SADMIND_PROGRAM, 2, sadmind2_proc, hf_sadmind_procedure_v2);
+ rpc_init_proc_table(proto_sadmind, SADMIND_PROGRAM, 3, sadmind3_proc, hf_sadmind_procedure_v3);
}
/*
diff --git a/epan/dissectors/packet-spray.c b/epan/dissectors/packet-spray.c
index 2287506a96..0709f14e5a 100644
--- a/epan/dissectors/packet-spray.c
+++ b/epan/dissectors/packet-spray.c
@@ -136,7 +136,7 @@ proto_reg_handoff_spray(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_spray, SPRAY_PROGRAM, ett_spray);
/* Register the procedure tables */
- rpc_init_proc_table(SPRAY_PROGRAM, 1, spray1_proc, hf_spray_procedure_v1);
+ rpc_init_proc_table(proto_spray, SPRAY_PROGRAM, 1, spray1_proc, hf_spray_procedure_v1);
}
/*
diff --git a/epan/dissectors/packet-stat-notify.c b/epan/dissectors/packet-stat-notify.c
index 579c2107d4..898b023c1e 100644
--- a/epan/dissectors/packet-stat-notify.c
+++ b/epan/dissectors/packet-stat-notify.c
@@ -103,7 +103,7 @@ proto_reg_handoff_statnotify(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_statnotify, STATNOTIFY_PROGRAM, ett_statnotify);
/* Register the procedure tables */
- rpc_init_proc_table(STATNOTIFY_PROGRAM, 1, statnotify1_proc, hf_statnotify_procedure_v1);
+ rpc_init_proc_table(proto_statnotify, STATNOTIFY_PROGRAM, 1, statnotify1_proc, hf_statnotify_procedure_v1);
}
/*
diff --git a/epan/dissectors/packet-stat.c b/epan/dissectors/packet-stat.c
index e4a574cbf0..ea1c29a98e 100644
--- a/epan/dissectors/packet-stat.c
+++ b/epan/dissectors/packet-stat.c
@@ -350,7 +350,7 @@ proto_reg_handoff_stat(void)
/* Register the protocol as RPC */
rpc_init_prog(hfi_stat->id, STAT_PROGRAM, ett_stat);
/* Register the procedure tables */
- rpc_init_proc_table(STAT_PROGRAM, 1, stat1_proc, hfi_stat_procedure_v1.id);
+ rpc_init_proc_table(hfi_stat->id, STAT_PROGRAM, 1, stat1_proc, hfi_stat_procedure_v1.id);
}
/*
diff --git a/epan/dissectors/packet-teklink.c b/epan/dissectors/packet-teklink.c
index 4a7e183600..79767150b5 100644
--- a/epan/dissectors/packet-teklink.c
+++ b/epan/dissectors/packet-teklink.c
@@ -576,7 +576,7 @@ proto_reg_handoff_teklink(void)
rpc_init_prog(proto_teklink, PROGRAM_TEKLINK, ett_teklink);
/* Register the procedure tables */
- rpc_init_proc_table(PROGRAM_TEKLINK, 1, teklink_proc, hf_teklink_procedure);
+ rpc_init_proc_table(proto_teklink, PROGRAM_TEKLINK, 1, teklink_proc, hf_teklink_procedure);
}
/*
diff --git a/epan/dissectors/packet-vxi11.c b/epan/dissectors/packet-vxi11.c
index eb5ee3426e..06da7dbdb5 100644
--- a/epan/dissectors/packet-vxi11.c
+++ b/epan/dissectors/packet-vxi11.c
@@ -926,7 +926,7 @@ proto_reg_handoff_vxi11_core(void)
};
rpc_init_prog(proto_vxi11_core, VXI11_CORE_PROGRAM, ett_vxi11_core);
- rpc_init_proc_table(VXI11_CORE_PROGRAM,
+ rpc_init_proc_table(proto_vxi11_core, VXI11_CORE_PROGRAM,
VXI11_CORE_VERSION,
vxi111_core_proc,
hf_vxi11_core_procedure_v1);
@@ -973,7 +973,7 @@ proto_reg_handoff_vxi11_async(void)
};
rpc_init_prog(proto_vxi11_async, VXI11_ASYNC_PROGRAM, ett_vxi11_async);
- rpc_init_proc_table(VXI11_ASYNC_PROGRAM,
+ rpc_init_proc_table(proto_vxi11_async, VXI11_ASYNC_PROGRAM,
VXI11_ASYNC_VERSION,
vxi111_async_proc,
hf_vxi11_async_procedure_v1);
@@ -1026,7 +1026,7 @@ proto_reg_handoff_vxi11_intr(void)
};
rpc_init_prog(proto_vxi11_intr, VXI11_INTR_PROGRAM, ett_vxi11_intr);
- rpc_init_proc_table(VXI11_INTR_PROGRAM,
+ rpc_init_proc_table(proto_vxi11_intr, VXI11_INTR_PROGRAM,
VXI11_INTR_VERSION,
vxi111_intr_proc,
hf_vxi11_intr_procedure_v1);
diff --git a/epan/dissectors/packet-ypbind.c b/epan/dissectors/packet-ypbind.c
index 16baa0b993..9b970ef1d8 100644
--- a/epan/dissectors/packet-ypbind.c
+++ b/epan/dissectors/packet-ypbind.c
@@ -217,8 +217,8 @@ proto_reg_handoff_ypbind(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_ypbind, YPBIND_PROGRAM, ett_ypbind);
/* Register the procedure tables */
- rpc_init_proc_table(YPBIND_PROGRAM, 1, ypbind1_proc, hf_ypbind_procedure_v1);
- rpc_init_proc_table(YPBIND_PROGRAM, 2, ypbind2_proc, hf_ypbind_procedure_v2);
+ rpc_init_proc_table(proto_ypbind, YPBIND_PROGRAM, 1, ypbind1_proc, hf_ypbind_procedure_v1);
+ rpc_init_proc_table(proto_ypbind, YPBIND_PROGRAM, 2, ypbind2_proc, hf_ypbind_procedure_v2);
}
/*
diff --git a/epan/dissectors/packet-yppasswd.c b/epan/dissectors/packet-yppasswd.c
index 051f337409..2cd90eec92 100644
--- a/epan/dissectors/packet-yppasswd.c
+++ b/epan/dissectors/packet-yppasswd.c
@@ -164,7 +164,7 @@ proto_reg_handoff_yppasswd(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_yppasswd, YPPASSWD_PROGRAM, ett_yppasswd);
/* Register the procedure tables */
- rpc_init_proc_table(YPPASSWD_PROGRAM, 1, yppasswd1_proc, hf_yppasswd_procedure_v1);
+ rpc_init_proc_table(proto_yppasswd, YPPASSWD_PROGRAM, 1, yppasswd1_proc, hf_yppasswd_procedure_v1);
}
/*
diff --git a/epan/dissectors/packet-ypserv.c b/epan/dissectors/packet-ypserv.c
index 78f86c6f81..8bbb7b573a 100644
--- a/epan/dissectors/packet-ypserv.c
+++ b/epan/dissectors/packet-ypserv.c
@@ -644,9 +644,9 @@ proto_reg_handoff_ypserv(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_ypserv, YPSERV_PROGRAM, ett_ypserv);
/* Register the procedure tables */
- rpc_init_proc_table(YPSERV_PROGRAM, 1, ypserv1_proc,
+ rpc_init_proc_table(proto_ypserv, YPSERV_PROGRAM, 1, ypserv1_proc,
hf_ypserv_procedure_v1);
- rpc_init_proc_table(YPSERV_PROGRAM, 2, ypserv2_proc,
+ rpc_init_proc_table(proto_ypserv, YPSERV_PROGRAM, 2, ypserv2_proc,
hf_ypserv_procedure_v2);
}
diff --git a/epan/dissectors/packet-ypxfr.c b/epan/dissectors/packet-ypxfr.c
index 066bf3c085..19a71966aa 100644
--- a/epan/dissectors/packet-ypxfr.c
+++ b/epan/dissectors/packet-ypxfr.c
@@ -74,7 +74,7 @@ proto_reg_handoff_ypxfr(void)
/* Register the protocol as RPC */
rpc_init_prog(proto_ypxfr, YPXFR_PROGRAM, ett_ypxfr);
/* Register the procedure tables */
- rpc_init_proc_table(YPXFR_PROGRAM, 1, ypxfr1_proc, hf_ypxfr_procedure_v1);
+ rpc_init_proc_table(proto_ypxfr, YPXFR_PROGRAM, 1, ypxfr1_proc, hf_ypxfr_procedure_v1);
}
/*
diff --git a/ui/gtk/rpc_stat.c b/ui/gtk/rpc_stat.c
index 386e9fbc28..316a1342d5 100644
--- a/ui/gtk/rpc_stat.c
+++ b/ui/gtk/rpc_stat.c
@@ -120,7 +120,7 @@ static gint32 rpc_min_proc=-1;
static gint32 rpc_max_proc=-1;
static void
-rpcstat_find_procs(gpointer *key, gpointer *value _U_, gpointer *user_data _U_)
+rpcstat_find_procs(const gchar *table_name _U_, ftenum_t selector_type _U_, gpointer key, gpointer value _U_, gpointer user_data _U_)
{
rpc_proc_info_key *k=(rpc_proc_info_key *)key;
@@ -145,7 +145,7 @@ rpcstat_find_procs(gpointer *key, gpointer *value _U_, gpointer *user_data _U_)
}
static void
-rpcstat_find_vers(gpointer *key, gpointer *value _U_, gpointer *user_data _U_)
+rpcstat_find_vers(const gchar *table_name _U_, ftenum_t selector_type _U_, gpointer key, gpointer value _U_, gpointer user_data _U_)
{
rpc_proc_info_key *k=(rpc_proc_info_key *)key;
@@ -235,7 +235,10 @@ gtk_rpcstat_init(const char *opt_arg, void* userdata _U_)
rpc_min_proc=-1;
rpc_max_proc=-1;
- g_hash_table_foreach(rpc_procs, (GHFunc)rpcstat_find_procs, NULL);
+
+ /* Need to run over both dissector tables */
+ dissector_table_foreach ("rpc.call", rpcstat_find_procs, NULL);
+ dissector_table_foreach ("rpc.reply", rpcstat_find_procs, NULL);
/* We must display TOP LEVEL Widget before calling init_gtk_srt_table() */
gtk_widget_show_all(rs->gtk_data.win);
@@ -341,7 +344,8 @@ rpcstat_program_select(GtkWidget *prog_combo_box, gpointer user_data)
ws_combo_box_clear_text_and_pointer(GTK_COMBO_BOX(vers_combo_box));
rpc_min_vers=-1;
rpc_max_vers=-1;
- g_hash_table_foreach(rpc_procs, (GHFunc)rpcstat_find_vers, NULL);
+ dissector_table_foreach ("rpc.call", rpcstat_find_vers, NULL);
+ dissector_table_foreach ("rpc.reply", rpcstat_find_vers, NULL);
for(i=rpc_min_vers;i<=rpc_max_vers;i++){
char vs[5];
g_snprintf(vs, sizeof(vs), "%d",i);