Ethereal-dev: [ethereal-dev] Bug-fixes and time-protocol extention for ethereal-0.8.3
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Dietmar Petras <dietmar.petras@xxxxxxx>
Date: Wed, 9 Feb 2000 15:33:33 +0100
Dear ethereal developers, enclosed please find a patch that does the following: * fix a bug in packet-tftp.c dissecting TFTP Option Acknowledgement packets. The is no Block-Id in TFTP Option Acknowledgements, as it is in TFTP Acknowledgements. * Extension of manuf by ethernet addresses from ELSA (my company), a german vendor of ISDN routers, cable modems, etc. * New dissector for Time Protocol [RFC 0868]. That protocol works on port 37 of UDP and TCP. The implementation in this patch only dissects the more usual UDP version. It could print the time in a more fashion way, but thats for a later version. Regards, Dietmar --------------------------------------------------------------------------- Dr. Dietmar Petras Senior Expert ELSA AG Engineering Consumer Communications Sonnenweg 11 Phone: +49-(0)241-606-4649 52070 Aachen Fax: +49-(0)241-606-4699 Germany EMail: DPetras@xxxxxxx --------------------------------------------------------------------------- diff -Naur ethereal-0.8.3/packet-tftp.c ethereal-0.8.3.new/packet-tftp.c --- ethereal-0.8.3/packet-tftp.c Thu Jan 27 10:40:58 2000 +++ ethereal-0.8.3.new/packet-tftp.c Wed Feb 9 12:38:57 2000 @@ -167,9 +167,6 @@ case OACK: proto_tree_add_text(tftp_tree, offset, 2, "Option Acknowledgement"); offset += 2; - i1 = pntohs(pd+offset); - proto_tree_add_text(tftp_tree, offset, 2, "Block = %u", i1); - offset += 2; while (offset < pi.captured_len) { int i2; i1 = strlen(pd+offset); /* length of option */ diff -Naur ethereal-0.8.3/manuf ethereal-0.8.3.new/manuf --- ethereal-0.8.3/manuf Wed Feb 9 15:25:48 2000 +++ ethereal-0.8.3.new/manuf Wed Feb 9 14:32:51 2000 @@ -140,6 +140,7 @@ 00:90:27 Intel 00:90:b1 Cisco 00:a0:24 3Com +00:a0:57 ELSA 00:aa:00 Intel 00:c0:4f Dell 00:c0:95 Znyx # Network Appliance diff -Naur ethereal-0.8.3/packet-time.c ethereal-0.8.3.new/packet-time.c --- ethereal-0.8.3/packet-time.c Wed Feb 9 15:28:26 2000 +++ ethereal-0.8.3.new/packet-time.c Wed Feb 9 15:29:16 2000 @@ -0,0 +1,88 @@ +/* packet-time.c + * Routines for time packet dissection + * + * Richard Sharpe <rsharpe@xxxxxxxxxx> + * Craig Newell <CraigN@xxxxxxxxxxxxxxxx> + * RFC2347 TIME Option Extension + * + * $Id: packet-time.c,v 1.9 2000/01/27 07:09:15 guy Exp $ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs <gerald@xxxxxxxx> + * Copyright 1998 Gerald Combs + * + * Copied from packet-tftp.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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "packet.h" + +static int proto_time = -1; +static int hf_time_time = -1; + +static gint ett_time = -1; + +void +dissect_time(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) +{ + proto_tree *time_tree; + proto_item *ti; + + if (check_col(fd, COL_PROTOCOL)) + col_add_str(fd, COL_PROTOCOL, "TIME"); + + if (check_col(fd, COL_INFO)) { + col_add_fstr(fd, COL_INFO, "TIME %s", pi.srcport == 37? "Response":"Request"); + } + + if (tree) { + + ti = proto_tree_add_item(tree, proto_time, offset, END_OF_FRAME, NULL); + time_tree = proto_item_add_subtree(ti, ett_time); + + proto_tree_add_text(time_tree, offset, 0, + pi.srcport==37? "Type: Response":"Type: Request"); + if (pi.srcport == 37) { + guint32 delta_seconds = pntohl(pd+offset); + proto_tree_add_text(time_tree, offset, 4, + " %lu seconds since midnight 1 January 1900 GMT", + delta_seconds); + } + } +} + +void +proto_register_time(void) +{ + + static hf_register_info hf[] = { + { &hf_time_time, + { "Time", "time", + FT_UINT32, BASE_DEC, NULL, 0x0, + "Seconds since 00:00 (midnight) 1 January 1900 GMT" }} + }; + static gint *ett[] = { + &ett_time, + }; + + proto_time = proto_register_protocol("Time Protocol", "time"); + proto_register_field_array(proto_time, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); +} diff -Naur ethereal-0.8.3/packet-udp.c ethereal-0.8.3.new/packet-udp.c --- ethereal-0.8.3/packet-udp.c Tue Feb 1 05:56:33 2000 +++ ethereal-0.8.3.new/packet-udp.c Wed Feb 9 14:15:11 2000 @@ -66,6 +66,7 @@ /* UDP Ports -> should go in packet-udp.h */ +#define UDP_PORT_TIME 37 #define UDP_PORT_TACACS 49 #define UDP_PORT_DNS 53 #define UDP_PORT_BOOTPS 67 @@ -303,6 +304,9 @@ /* This is the first point of call, but it adds a dynamic call */ udp_hash_add(MAX(uh_sport, uh_dport), dissect_tftp); /* Add to table */ dissect_tftp(pd, offset, fd, tree); + } else if (PORT_IS(UDP_PORT_TIME)) { + /* This is the first point of call, but it adds a dynamic call */ + dissect_time(pd, offset, fd, tree); } else if (PORT_IS(UDP_PORT_RADIUS) || PORT_IS(UDP_PORT_RADACCT) || PORT_IS(UDP_PORT_RADIUS_NEW) || diff -Naur ethereal-0.8.3/packet.h ethereal-0.8.3.new/packet.h --- ethereal-0.8.3/packet.h Tue Jan 25 11:43:37 2000 +++ ethereal-0.8.3.new/packet.h Wed Feb 9 14:09:43 2000 @@ -401,6 +401,7 @@ void dissect_tcp(const u_char *, int, frame_data *, proto_tree *); void dissect_telnet(const u_char *, int, frame_data *, proto_tree *); void dissect_tftp(const u_char *, int, frame_data *, proto_tree *); +void dissect_time(const u_char *, int, frame_data *, proto_tree *); void dissect_tns(const u_char *, int, frame_data *, proto_tree *); void dissect_tr(const u_char *, int, frame_data *, proto_tree *); void dissect_trmac(const u_char *, int, frame_data *, proto_tree *); diff -Naur ethereal-0.8.3/Makefile.am ethereal-0.8.3.new/Makefile.am --- ethereal-0.8.3/Makefile.am Tue Feb 1 05:56:31 2000 +++ ethereal-0.8.3.new/Makefile.am Wed Feb 9 14:09:43 2000 @@ -150,6 +150,7 @@ packet-tcp.c \ packet-telnet.c\ packet-tftp.c \ + packet-time.c \ packet-tns.c \ packet-tns.h \ packet-tr.c \ diff -Naur ethereal-0.8.3/Makefile.in ethereal-0.8.3.new/Makefile.in --- ethereal-0.8.3/Makefile.in Tue Feb 1 23:42:06 2000 +++ ethereal-0.8.3.new/Makefile.in Wed Feb 9 14:09:43 2000 @@ -137,7 +137,7 @@ # Any POSIX-compatible YACC should honor the -p flag YFLAGS = -d -p dfilter_ -DISSECTOR_SOURCES = packet-aarp.c packet-afs.c packet-afs.h packet-arp.c packet-arp.h packet-ascend.c packet-atalk.c packet-atalk.h packet-atm.c packet-auto_rp.c packet-bgp.c packet-bgp.h packet-bootp.c packet-bootparams.c packet-bootparams.h packet-bpdu.c packet-cdp.c packet-clip.c packet-data.c packet-dns.c packet-dns.h packet-eth.c packet-fddi.c packet-ftp.c packet-giop.c packet-gre.c packet-hsrp.c packet-http.c packet-icmpv6.c packet-icp.c packet-icq.c packet-imap.c packet-ip.c packet-ip.h packet-ipp.c packet-ipsec.c packet-ipv6.c packet-ipv6.h packet-ipx.c packet-ipx.h packet-irc.c packet-isakmp.c packet-isis.h packet-isis.c packet-isis-clv.h packet-isis-clv.c packet-isis-hello.h packet-isis-hello.c packet-isis-lsp.h packet-isis-lsp.c packet-isis-snp.h packet-isis-snp.c packet-isl.c packet-l2tp.c packet-lapb.c packet-lapd.c packet-ldap.c packet-l! lc.c packet-lpd.c packet-mapi.c packet-mount.c packet-mount.h packet-nbipx.c packet-nbns.c packet-ncp.c packet-ncp.h packet-netbios.c packet-netbios.h packet-nfs.c packet-nfs.h packet-nlm.c packet-nlm.h packet-nntp.c packet-ntp.c packet-ntp.h packet-null.c packet-osi.c packet-ospf.c packet-ospf.h packet-pim.c packet-pop.c packet-portmap.c packet-portmap.h packet-ppp.c packet-pppoe.c packet-pptp.c packet-q2931.c packet-q931.c packet-q931.h packet-radius.c packet-raw.c packet-rip.c packet-rip.h packet-ripng.c packet-ripng.h packet-rpc.c packet-rpc.h packet-rsvp.c packet-rsvp.h packet-rtsp.c packet-rx.c packet-rx.h packet-sap.c packet-sdp.c packet-smb.c packet-sna.c packet-sna.h packet-snmp.c packet-snmp.h packet-srvloc.c packet-sscop.c packet-stat.c packet-stat.h packet-tacacs.c packet-tcp.c packet-telnet.c packet-tftp.c packet-tns.c packet-tns.h! packet-tr.c packet-trmac.c packet-udp.c packet-v120.c packe t-vines.c packet-vines.h packet-vlan.c packet-vrrp.c packet-wccp.c packet-who.c packet-x25.c packet-yhoo.c packet-yhoo.h packet-ypbind.c packet-ypbind.h packet-ypserv.c packet-ypserv.h packet-ypxfr.c packet-ypxfr.h +DISSECTOR_SOURCES = packet-aarp.c packet-afs.c packet-afs.h packet-arp.c packet-arp.h packet-ascend.c packet-atalk.c packet-atalk.h packet-atm.c packet-auto_rp.c packet-bgp.c packet-bgp.h packet-bootp.c packet-bootparams.c packet-bootparams.h packet-bpdu.c packet-cdp.c packet-clip.c packet-data.c packet-dns.c packet-dns.h packet-eth.c packet-fddi.c packet-ftp.c packet-giop.c packet-gre.c packet-hsrp.c packet-http.c packet-icmpv6.c packet-icp.c packet-icq.c packet-imap.c packet-ip.c packet-ip.h packet-ipp.c packet-ipsec.c packet-ipv6.c packet-ipv6.h packet-ipx.c packet-ipx.h packet-irc.c packet-isakmp.c packet-isis.h packet-isis.c packet-isis-clv.h packet-isis-clv.c packet-isis-hello.h packet-isis-hello.c packet-isis-lsp.h packet-isis-lsp.c packet-isis-snp.h packet-isis-snp.c packet-isl.c packet-l2tp.c packet-lapb.c packet-lapd.c packet-ldap.c packet-l! lc.c packet-lpd.c packet-mapi.c packet-mount.c packet-mount.h packet-nbipx.c packet-nbns.c packet-ncp.c packet-ncp.h packet-netbios.c packet-netbios.h packet-nfs.c packet-nfs.h packet-nlm.c packet-nlm.h packet-nntp.c packet-ntp.c packet-ntp.h packet-null.c packet-osi.c packet-ospf.c packet-ospf.h packet-pim.c packet-pop.c packet-portmap.c packet-portmap.h packet-ppp.c packet-pppoe.c packet-pptp.c packet-q2931.c packet-q931.c packet-q931.h packet-radius.c packet-raw.c packet-rip.c packet-rip.h packet-ripng.c packet-ripng.h packet-rpc.c packet-rpc.h packet-rsvp.c packet-rsvp.h packet-rtsp.c packet-rx.c packet-rx.h packet-sap.c packet-sdp.c packet-smb.c packet-sna.c packet-sna.h packet-snmp.c packet-snmp.h packet-srvloc.c packet-sscop.c packet-stat.c packet-stat.h packet-tacacs.c packet-tcp.c packet-telnet.c packet-tftp.c packet-time.c packet-tns! .c packet-tns.h packet-tr.c packet-trmac.c packet-udp.c pack et-v120.c packet-vines.c packet-vines.h packet-vlan.c packet-vrrp.c packet-wccp.c packet-who.c packet-x25.c packet-yhoo.c packet-yhoo.h packet-ypbind.c packet-ypbind.h packet-ypserv.c packet-ypserv.h packet-ypxfr.c packet-ypxfr.h ETHEREAL_COMMON_SOURCES = alignment.h asn1.c asn1.h column.c column.h conversation.c conversation.h dfilter-int.h dfilter-grammar.y dfilter-scanner.l dfilter.c dfilter.h ethertype.c etypes.h follow.c follow.h inet_v6defs.h ipproto.c ipv4.c ipv4.h nlpid.h oui.h packet.c packet.h plugins.c plugins.h prefs.c prefs.h print.c print.h proto.c proto.h ps.c ps.h register.c register.h resolv.c resolv.h smb.h timestamp.h util.c util.h xdlc.c xdlc.h @@ -269,7 +269,7 @@ packet-ripng.o packet-rpc.o packet-rsvp.o packet-rtsp.o packet-rx.o \ packet-sap.o packet-sdp.o packet-smb.o packet-sna.o packet-snmp.o \ packet-srvloc.o packet-sscop.o packet-stat.o packet-tacacs.o \ -packet-tcp.o packet-telnet.o packet-tftp.o packet-tns.o packet-tr.o \ +packet-tcp.o packet-telnet.o packet-tftp.o packet-time.o packet-tns.o packet-tr.o \ packet-trmac.o packet-udp.o packet-v120.o packet-vines.o packet-vlan.o \ packet-vrrp.o packet-wccp.o packet-who.o packet-x25.o packet-yhoo.o \ packet-ypbind.o packet-ypserv.o packet-ypxfr.o asn1.o column.o \ @@ -295,7 +295,7 @@ packet-ripng.o packet-rpc.o packet-rsvp.o packet-rtsp.o packet-rx.o \ packet-sap.o packet-sdp.o packet-smb.o packet-sna.o packet-snmp.o \ packet-srvloc.o packet-sscop.o packet-stat.o packet-tacacs.o \ -packet-tcp.o packet-telnet.o packet-tftp.o packet-tns.o packet-tr.o \ +packet-tcp.o packet-telnet.o packet-tftp.o packet-time.o packet-tns.o packet-tr.o \ packet-trmac.o packet-udp.o packet-v120.o packet-vines.o packet-vlan.o \ packet-vrrp.o packet-wccp.o packet-who.o packet-x25.o packet-yhoo.o \ packet-ypbind.o packet-ypserv.o packet-ypxfr.o asn1.o column.o \ @@ -323,7 +323,7 @@ packet-ripng.o packet-rpc.o packet-rsvp.o packet-rtsp.o packet-rx.o \ packet-sap.o packet-sdp.o packet-smb.o packet-sna.o packet-snmp.o \ packet-srvloc.o packet-sscop.o packet-stat.o packet-tacacs.o \ -packet-tcp.o packet-telnet.o packet-tftp.o packet-tns.o packet-tr.o \ +packet-tcp.o packet-telnet.o packet-tftp.o packet-time.o packet-tns.o packet-tr.o \ packet-trmac.o packet-udp.o packet-v120.o packet-vines.o packet-vlan.o \ packet-vrrp.o packet-wccp.o packet-who.o packet-x25.o packet-yhoo.o \ packet-ypbind.o packet-ypserv.o packet-ypxfr.o asn1.o column.o \ @@ -910,6 +910,8 @@ packet-telnet.o: packet-telnet.c config.h packet.h wiretap/wtap.h \ proto.h ipv4.h packet-tftp.o: packet-tftp.c config.h packet.h wiretap/wtap.h proto.h \ + ipv4.h +packet-time.o: packet-time.c config.h packet.h wiretap/wtap.h proto.h \ ipv4.h packet-tns.o: packet-tns.c config.h packet.h wiretap/wtap.h proto.h \ ipv4.h packet-tns.h diff -Naur ethereal-0.8.3/Makefile.nmake ethereal-0.8.3.new/Makefile.nmake --- ethereal-0.8.3/Makefile.nmake Tue Jan 25 11:43:08 2000 +++ ethereal-0.8.3.new/Makefile.nmake Wed Feb 9 14:09:43 2000 @@ -107,6 +107,7 @@ packet-tcp.obj \ packet-telnet.obj\ packet-tftp.obj \ + packet-time.obj \ packet-tns.obj \ packet-tr.obj \ packet-trmac.obj \ -- --------------------------------------------------------------------------- Dr. Dietmar Petras Senior Expert ELSA AG Engineering Consumer Communications Sonnenweg 11 Phone: +49-(0)241-606-4649 52070 Aachen Fax: +49-(0)241-606-4699 Germany EMail: DPetras@xxxxxxx ---------------------------------------------------------------------------
- Prev by Date: [ethereal-dev] plugins do not work anymore
- Next by Date: RE: Default colors was [ethereal-dev] Feature Set for 1.0
- Previous by thread: Re: [ethereal-dev] plugins do not work anymore
- Next by thread: Re: [ethereal-dev] Bug-fixes and time-protocol extention for ethereal-0.8.3
- Index(es):