* Routines for who protocol (see man rwhod)
* Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: packet-who.c,v 1.19 2001/11/13 23:55:30 gram Exp $
+ * $Id: packet-who.c,v 1.26 2003/04/30 02:35:20 gerald Exp $
*
* Ethereal - Network traffic analyzer
- * By Gerald Combs <gerald@zing.org>
+ * By Gerald Combs <gerald@ethereal.com>
* 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 "config.h"
#endif
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
#include <string.h>
#include <time.h>
#include <glib.h>
-#include "packet.h"
+#include <epan/packet.h>
/*
The messages sent and received, are of the form:
struct outmp {
-0 char out_line[8]; tty name
-8 char out_name[8]; user id
-16 long out_time; time on
+0 char out_line[8]; tty name
+8 char out_name[8]; user id
+16 long out_time; time on
};
struct whod {
nstime_t ts;
/* Summary information */
- if (check_col(pinfo->fd, COL_PROTOCOL))
- col_set_str(pinfo->fd, COL_PROTOCOL, "WHO");
- if (check_col(pinfo->fd, COL_INFO))
- col_clear(pinfo->fd, COL_INFO);
+ if (check_col(pinfo->cinfo, COL_PROTOCOL))
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "WHO");
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_clear(pinfo->cinfo, COL_INFO);
ts.nsecs = 0;
if (tree) {
- who_ti = proto_tree_add_item(tree, proto_who, tvb, offset,
- tvb_length(tvb), FALSE);
+ who_ti = proto_tree_add_item(tree, proto_who, tvb, offset, -1,
+ FALSE);
who_tree = proto_item_add_subtree(who_ti, ett_who);
}
}
offset += 4;
- tvb_get_nstringz0(tvb, offset, 32, server_name);
+ tvb_get_nstringz0(tvb, offset, sizeof(server_name), server_name);
if (tree)
proto_tree_add_string(who_tree, hf_who_hostname, tvb, offset,
32, server_name);
offset += 4;
/* Summary information */
- if (check_col(pinfo->fd, COL_INFO))
- col_add_fstr(pinfo->fd, COL_INFO, "%s: %.02f %.02f %.02f",
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s: %.02f %.02f %.02f",
server_name, loadav_5, loadav_10, loadav_15);
if (tree) {
proto_tree *whoent_tree = NULL;
proto_item *whoent_ti = NULL;
int line_offset = offset;
- gchar out_line[9];
- gchar out_name[9];
+ gchar out_line[9];
+ gchar out_name[9];
nstime_t ts;
int whoent_num = 0;
guint32 idle_secs; /* say that out loud... */
line_offset, SIZE_OF_WHOENT, FALSE);
whoent_tree = proto_item_add_subtree(whoent_ti, ett_whoent);
- tvb_get_nstringz0(tvb, line_offset, 8, out_line);
+ tvb_get_nstringz0(tvb, line_offset, sizeof(out_line), out_line);
proto_tree_add_string(whoent_tree, hf_who_tty, tvb, line_offset,
8, out_line);
line_offset += 8;
- tvb_get_nstringz0(tvb, line_offset, 8, out_name);
+ tvb_get_nstringz0(tvb, line_offset, sizeof(out_name), out_name);
proto_tree_add_string(whoent_tree, hf_who_uid, tvb, line_offset,
8, out_name);
line_offset += 8;
void
proto_reg_handoff_who(void)
{
- dissector_add("udp.port", UDP_PORT_WHO, dissect_who, proto_who);
+ dissector_handle_t who_handle;
+
+ who_handle = create_dissector_handle(dissect_who, proto_who);
+ dissector_add("udp.port", UDP_PORT_WHO, who_handle);
}