/src/wireshark/epan/dissectors/packet-yppasswd.c
Line | Count | Source |
1 | | /* packet-yppasswd.c |
2 | | * Routines for yppasswd dissection |
3 | | * |
4 | | * Wireshark - Network traffic analyzer |
5 | | * By Gerald Combs <gerald@wireshark.org> |
6 | | * Copyright 1998 Gerald Combs |
7 | | * |
8 | | * SPDX-License-Identifier: GPL-2.0-or-later |
9 | | */ |
10 | | |
11 | | #include "config.h" |
12 | | |
13 | | #include "packet-rpc.h" |
14 | | #include "packet-yppasswd.h" |
15 | | |
16 | | void proto_register_yppasswd(void); |
17 | | void proto_reg_handoff_yppasswd(void); |
18 | | |
19 | | static int proto_yppasswd; |
20 | | static int hf_yppasswd_procedure_v1; |
21 | | static int hf_yppasswd_status; |
22 | | static int hf_yppasswd_oldpass; |
23 | | static int hf_yppasswd_newpw; |
24 | | static int hf_yppasswd_newpw_name; |
25 | | static int hf_yppasswd_newpw_passwd; |
26 | | static int hf_yppasswd_newpw_uid; |
27 | | static int hf_yppasswd_newpw_gid; |
28 | | static int hf_yppasswd_newpw_gecos; |
29 | | static int hf_yppasswd_newpw_dir; |
30 | | static int hf_yppasswd_newpw_shell; |
31 | | |
32 | | static int ett_yppasswd; |
33 | | static int ett_yppasswd_newpw; |
34 | | |
35 | | static int |
36 | | dissect_yppasswd_call(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) |
37 | 0 | { |
38 | 0 | proto_item *lock_item = NULL; |
39 | 0 | proto_tree *lock_tree = NULL; |
40 | 0 | int offset = 0; |
41 | |
|
42 | 0 | offset = dissect_rpc_string(tvb, pinfo, tree, hf_yppasswd_oldpass, |
43 | 0 | offset, NULL); |
44 | |
|
45 | 0 | lock_item = proto_tree_add_item(tree, hf_yppasswd_newpw, tvb, |
46 | 0 | offset, -1, ENC_NA); |
47 | |
|
48 | 0 | lock_tree = proto_item_add_subtree(lock_item, ett_yppasswd_newpw); |
49 | |
|
50 | 0 | offset = dissect_rpc_string(tvb, pinfo, lock_tree, |
51 | 0 | hf_yppasswd_newpw_name, offset, NULL); |
52 | 0 | offset = dissect_rpc_string(tvb, pinfo, lock_tree, |
53 | 0 | hf_yppasswd_newpw_passwd, offset, NULL); |
54 | 0 | offset = dissect_rpc_uint32(tvb, lock_tree, |
55 | 0 | hf_yppasswd_newpw_uid, offset); |
56 | 0 | offset = dissect_rpc_uint32(tvb, lock_tree, |
57 | 0 | hf_yppasswd_newpw_gid, offset); |
58 | 0 | offset = dissect_rpc_string(tvb, pinfo, lock_tree, |
59 | 0 | hf_yppasswd_newpw_gecos, offset, NULL); |
60 | 0 | offset = dissect_rpc_string(tvb, pinfo, lock_tree, |
61 | 0 | hf_yppasswd_newpw_dir, offset, NULL); |
62 | 0 | offset = dissect_rpc_string(tvb, pinfo, lock_tree, |
63 | 0 | hf_yppasswd_newpw_shell, offset, NULL); |
64 | |
|
65 | 0 | return offset; |
66 | 0 | } |
67 | | |
68 | | static int |
69 | | dissect_yppasswd_reply(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_) |
70 | 0 | { |
71 | 0 | return dissect_rpc_uint32(tvb, tree, hf_yppasswd_status, 0); |
72 | 0 | } |
73 | | |
74 | | /* proc number, "proc name", dissect_request, dissect_reply */ |
75 | | static const vsff yppasswd1_proc[] = { |
76 | | { YPPASSWDPROC_NULL, "NULL", |
77 | | dissect_rpc_void, dissect_rpc_void }, |
78 | | { YPPASSWDPROC_UPDATE, "UPDATE", |
79 | | dissect_yppasswd_call, dissect_yppasswd_reply }, |
80 | | { 0, NULL, NULL, NULL } |
81 | | }; |
82 | | static const value_string yppasswd1_proc_vals[] = { |
83 | | { YPPASSWDPROC_NULL, "NULL" }, |
84 | | { YPPASSWDPROC_UPDATE, "UPDATE" }, |
85 | | { 0, NULL } |
86 | | }; |
87 | | |
88 | | static const rpc_prog_vers_info yppasswd_vers_info[] = { |
89 | | { 1, yppasswd1_proc, &hf_yppasswd_procedure_v1 }, |
90 | | }; |
91 | | |
92 | | void |
93 | | proto_register_yppasswd(void) |
94 | 15 | { |
95 | 15 | static hf_register_info hf[] = { |
96 | 15 | { &hf_yppasswd_procedure_v1, { |
97 | 15 | "V1 Procedure", "yppasswd.procedure_v1", FT_UINT32, BASE_DEC, |
98 | 15 | VALS(yppasswd1_proc_vals), 0, NULL, HFILL }}, |
99 | 15 | { &hf_yppasswd_status, { |
100 | 15 | "status", "yppasswd.status", FT_UINT32, BASE_DEC, |
101 | 15 | NULL, 0, "YPPasswd update status", HFILL }}, |
102 | | |
103 | 15 | { &hf_yppasswd_oldpass, { |
104 | 15 | "oldpass", "yppasswd.oldpass", FT_STRING, BASE_NONE, |
105 | 15 | NULL, 0, "Old encrypted password", HFILL }}, |
106 | | |
107 | 15 | { &hf_yppasswd_newpw, { |
108 | 15 | "newpw", "yppasswd.newpw", FT_NONE, BASE_NONE, |
109 | 15 | NULL, 0, "New passwd entry", HFILL }}, |
110 | | |
111 | 15 | { &hf_yppasswd_newpw_name, { |
112 | 15 | "name", "yppasswd.newpw.name", FT_STRING, BASE_NONE, |
113 | 15 | NULL, 0, "Username", HFILL }}, |
114 | | |
115 | 15 | { &hf_yppasswd_newpw_passwd, { |
116 | 15 | "passwd", "yppasswd.newpw.passwd", FT_STRING, BASE_NONE, |
117 | 15 | NULL, 0, "Encrypted passwd", HFILL }}, |
118 | | |
119 | 15 | { &hf_yppasswd_newpw_uid, { |
120 | 15 | "uid", "yppasswd.newpw.uid", FT_UINT32, BASE_DEC, |
121 | 15 | NULL, 0, "UserID", HFILL }}, |
122 | | |
123 | 15 | { &hf_yppasswd_newpw_gid, { |
124 | 15 | "gid", "yppasswd.newpw.gid", FT_UINT32, BASE_DEC, |
125 | 15 | NULL, 0, "GroupID", HFILL }}, |
126 | | |
127 | 15 | { &hf_yppasswd_newpw_gecos, { |
128 | 15 | "gecos", "yppasswd.newpw.gecos", FT_STRING, BASE_NONE, |
129 | 15 | NULL, 0, "In real life name", HFILL }}, |
130 | | |
131 | 15 | { &hf_yppasswd_newpw_dir, { |
132 | 15 | "dir", "yppasswd.newpw.dir", FT_STRING, BASE_NONE, |
133 | 15 | NULL, 0, "Home Directory", HFILL }}, |
134 | | |
135 | 15 | { &hf_yppasswd_newpw_shell, { |
136 | 15 | "shell", "yppasswd.newpw.shell", FT_STRING, BASE_NONE, |
137 | 15 | NULL, 0, "Default shell", HFILL }}, |
138 | | |
139 | 15 | }; |
140 | | |
141 | 15 | static int *ett[] = { |
142 | 15 | &ett_yppasswd, |
143 | 15 | &ett_yppasswd_newpw, |
144 | 15 | }; |
145 | | |
146 | 15 | proto_yppasswd = proto_register_protocol("Yellow Pages Passwd", |
147 | 15 | "YPPASSWD", "yppasswd"); |
148 | 15 | proto_register_field_array(proto_yppasswd, hf, array_length(hf)); |
149 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
150 | 15 | } |
151 | | |
152 | | void |
153 | | proto_reg_handoff_yppasswd(void) |
154 | 15 | { |
155 | | /* Register the protocol as RPC */ |
156 | 15 | rpc_init_prog(proto_yppasswd, YPPASSWD_PROGRAM, ett_yppasswd, |
157 | | G_N_ELEMENTS(yppasswd_vers_info), yppasswd_vers_info); |
158 | 15 | } |
159 | | |
160 | | /* |
161 | | * Editor modelines - https://www.wireshark.org/tools/modelines.html |
162 | | * |
163 | | * Local variables: |
164 | | * c-basic-offset: 8 |
165 | | * tab-width: 8 |
166 | | * indent-tabs-mode: t |
167 | | * End: |
168 | | * |
169 | | * vi: set shiftwidth=8 tabstop=8 noexpandtab: |
170 | | * :indentSize=8:tabSize=8:noTabs=false: |
171 | | */ |