Moved the packet_info structure and supporting functions out of
packet.{h,c} and into a separate packet_info{h,c}. svn path=/trunk/; revision=3225
This commit is contained in:
parent
13cfdd7b71
commit
dd54ba9396
|
@ -2,7 +2,7 @@
|
|||
# Automake file for the EPAN library
|
||||
# (Ethereal Protocol ANalyzer Library)
|
||||
#
|
||||
# $Id: Makefile.am,v 1.21 2001/04/01 04:11:50 hagbard Exp $
|
||||
# $Id: Makefile.am,v 1.22 2001/04/01 04:50:42 hagbard Exp $
|
||||
#
|
||||
# Ethereal - Network traffic analyzer
|
||||
# By Gerald Combs <gerald@zing.org>
|
||||
|
@ -56,6 +56,8 @@ libethereal_a_SOURCES = \
|
|||
ipv4.h \
|
||||
packet.c \
|
||||
packet.h \
|
||||
packet_info.c \
|
||||
packet_info.h \
|
||||
pint.h \
|
||||
plugins.c \
|
||||
plugins.h \
|
||||
|
|
|
@ -30,6 +30,7 @@ OBJECTS=atalk-utils.obj \
|
|||
inet_ntop.obj \
|
||||
ipv4.obj \
|
||||
packet.obj \
|
||||
packet_info.obj \
|
||||
plugins.obj \
|
||||
proto.obj \
|
||||
resolv.obj \
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* packet.c
|
||||
* Routines for packet disassembly
|
||||
*
|
||||
* $Id: packet.c,v 1.27 2001/04/01 04:11:51 hagbard Exp $
|
||||
* $Id: packet.c,v 1.28 2001/04/01 04:50:42 hagbard Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@zing.org>
|
||||
|
@ -603,24 +603,6 @@ fill_in_columns(frame_data *fd)
|
|||
}
|
||||
}
|
||||
|
||||
void blank_packetinfo(void)
|
||||
{
|
||||
pi.dl_src.type = AT_NONE;
|
||||
pi.dl_dst.type = AT_NONE;
|
||||
pi.net_src.type = AT_NONE;
|
||||
pi.net_dst.type = AT_NONE;
|
||||
pi.src.type = AT_NONE;
|
||||
pi.dst.type = AT_NONE;
|
||||
pi.ethertype = 0;
|
||||
pi.ipproto = 0;
|
||||
pi.ptype = PT_NONE;
|
||||
pi.srcport = 0;
|
||||
pi.destport = 0;
|
||||
pi.current_proto = "<Missing Protocol Name>";
|
||||
pi.p2p_dir = P2P_DIR_UNKNOWN;
|
||||
}
|
||||
|
||||
|
||||
/* Allow protocols to register "init" routines, which are called before
|
||||
we make a pass through a capture file and dissect all its packets
|
||||
(e.g., when we read in a new capture file, or run a "filter packets"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* packet.h
|
||||
* Definitions for packet disassembly structures and routines
|
||||
*
|
||||
* $Id: packet.h,v 1.28 2001/04/01 04:11:51 hagbard Exp $
|
||||
* $Id: packet.h,v 1.29 2001/04/01 04:50:42 hagbard Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@zing.org>
|
||||
|
@ -35,6 +35,7 @@
|
|||
#include "value_string.h"
|
||||
#include "column_info.h"
|
||||
#include "frame_data.h"
|
||||
#include "packet_info.h"
|
||||
|
||||
#define hi_nibble(b) (((b) & 0xf0) >> 4)
|
||||
#define lo_nibble(b) ((b) & 0x0f)
|
||||
|
@ -83,73 +84,6 @@ typedef enum {
|
|||
CHAR_EBCDIC = 1 /* EBCDIC */
|
||||
} char_enc;
|
||||
|
||||
/* Types of addresses Ethereal knows about. */
|
||||
typedef enum {
|
||||
AT_NONE, /* no link-layer address */
|
||||
AT_ETHER, /* MAC (Ethernet, 802.x, FDDI) address */
|
||||
AT_IPv4, /* IPv4 */
|
||||
AT_IPv6, /* IPv6 */
|
||||
AT_IPX, /* IPX */
|
||||
AT_SNA, /* SNA */
|
||||
AT_ATALK, /* Appletalk DDP */
|
||||
AT_VINES, /* Banyan Vines */
|
||||
AT_OSI, /* OSI NSAP */
|
||||
AT_DLCI /* Frame Relay DLCI */
|
||||
} address_type;
|
||||
|
||||
typedef struct _address {
|
||||
address_type type; /* type of address */
|
||||
int len; /* length of address, in bytes */
|
||||
const guint8 *data; /* bytes that constitute address */
|
||||
} address;
|
||||
|
||||
#define SET_ADDRESS(addr, addr_type, addr_len, addr_data) { \
|
||||
(addr)->type = (addr_type); \
|
||||
(addr)->len = (addr_len); \
|
||||
(addr)->data = (addr_data); \
|
||||
}
|
||||
|
||||
/* Types of port numbers Ethereal knows about. */
|
||||
typedef enum {
|
||||
PT_NONE, /* no port number */
|
||||
PT_SCTP, /* SCTP */
|
||||
PT_TCP, /* TCP */
|
||||
PT_UDP, /* UDP */
|
||||
PT_NCP /* NCP connection */
|
||||
} port_type;
|
||||
|
||||
#define P2P_DIR_UNKNOWN -1
|
||||
#define P2P_DIR_SENT 0
|
||||
#define P2P_DIR_RECV 1
|
||||
|
||||
typedef struct _packet_info {
|
||||
const char *current_proto; /* name of protocol currently being dissected */
|
||||
frame_data *fd;
|
||||
tvbuff_t *compat_top_tvb; /* only needed while converting Ethereal to use tvbuffs */
|
||||
union wtap_pseudo_header *pseudo_header;
|
||||
int len;
|
||||
int captured_len;
|
||||
address dl_src; /* link-layer source address */
|
||||
address dl_dst; /* link-layer destination address */
|
||||
address net_src; /* network-layer source address */
|
||||
address net_dst; /* network-layer destination address */
|
||||
address src; /* source address (net if present, DL otherwise )*/
|
||||
address dst; /* destination address (net if present, DL otherwise )*/
|
||||
guint32 ethertype; /* Ethernet Type Code, if this is an Ethernet packet */
|
||||
guint32 ipproto; /* IP protocol, if this is an IP packet */
|
||||
guint32 ipxptype; /* IPX packet type, if this is an IPX packet */
|
||||
gboolean fragmented; /* TRUE if the protocol is only a fragment */
|
||||
port_type ptype; /* type of the following two port numbers */
|
||||
guint32 srcport; /* source port */
|
||||
guint32 destport; /* destination port */
|
||||
guint32 match_port;
|
||||
int iplen;
|
||||
int iphdrlen;
|
||||
int p2p_dir;
|
||||
} packet_info;
|
||||
|
||||
extern packet_info pi;
|
||||
|
||||
/* Struct for boolean enumerations */
|
||||
typedef struct true_false_string {
|
||||
char *true_string;
|
||||
|
@ -301,8 +235,6 @@ void col_append_str(frame_data *, gint, gchar *);
|
|||
void col_set_cls_time(frame_data *, int);
|
||||
void fill_in_columns(frame_data *);
|
||||
|
||||
void blank_packetinfo(void);
|
||||
|
||||
/* Do all one-time initialization. */
|
||||
void dissect_init(void);
|
||||
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
/* packet_info.c
|
||||
* Routines for handling packet information
|
||||
*
|
||||
* $Id: packet_info.c,v 1.1 2001/04/01 04:50:42 hagbard Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@zing.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 "packet_info.h"
|
||||
|
||||
void blank_packetinfo(void)
|
||||
{
|
||||
pi.dl_src.type = AT_NONE;
|
||||
pi.dl_dst.type = AT_NONE;
|
||||
pi.net_src.type = AT_NONE;
|
||||
pi.net_dst.type = AT_NONE;
|
||||
pi.src.type = AT_NONE;
|
||||
pi.dst.type = AT_NONE;
|
||||
pi.ethertype = 0;
|
||||
pi.ipproto = 0;
|
||||
pi.ptype = PT_NONE;
|
||||
pi.srcport = 0;
|
||||
pi.destport = 0;
|
||||
pi.current_proto = "<Missing Protocol Name>";
|
||||
pi.p2p_dir = P2P_DIR_UNKNOWN;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
/* packet_info.h
|
||||
* Definitions for packet info structures and routines
|
||||
*
|
||||
* $Id: packet_info.h,v 1.1 2001/04/01 04:50:42 hagbard Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@zing.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_INFO_H__
|
||||
#define __PACKET_INFO_H__
|
||||
|
||||
#include "frame_data.h"
|
||||
#include "tvbuff.h"
|
||||
|
||||
/* Types of addresses Ethereal knows about. */
|
||||
typedef enum {
|
||||
AT_NONE, /* no link-layer address */
|
||||
AT_ETHER, /* MAC (Ethernet, 802.x, FDDI) address */
|
||||
AT_IPv4, /* IPv4 */
|
||||
AT_IPv6, /* IPv6 */
|
||||
AT_IPX, /* IPX */
|
||||
AT_SNA, /* SNA */
|
||||
AT_ATALK, /* Appletalk DDP */
|
||||
AT_VINES, /* Banyan Vines */
|
||||
AT_OSI, /* OSI NSAP */
|
||||
AT_DLCI /* Frame Relay DLCI */
|
||||
} address_type;
|
||||
|
||||
typedef struct _address {
|
||||
address_type type; /* type of address */
|
||||
int len; /* length of address, in bytes */
|
||||
const guint8 *data; /* bytes that constitute address */
|
||||
} address;
|
||||
|
||||
#define SET_ADDRESS(addr, addr_type, addr_len, addr_data) { \
|
||||
(addr)->type = (addr_type); \
|
||||
(addr)->len = (addr_len); \
|
||||
(addr)->data = (addr_data); \
|
||||
}
|
||||
|
||||
/* Types of port numbers Ethereal knows about. */
|
||||
typedef enum {
|
||||
PT_NONE, /* no port number */
|
||||
PT_SCTP, /* SCTP */
|
||||
PT_TCP, /* TCP */
|
||||
PT_UDP, /* UDP */
|
||||
PT_NCP /* NCP connection */
|
||||
} port_type;
|
||||
|
||||
#define P2P_DIR_UNKNOWN -1
|
||||
#define P2P_DIR_SENT 0
|
||||
#define P2P_DIR_RECV 1
|
||||
|
||||
typedef struct _packet_info {
|
||||
const char *current_proto; /* name of protocol currently being dissected */
|
||||
frame_data *fd;
|
||||
tvbuff_t *compat_top_tvb; /* only needed while converting Ethereal to use tvbuffs */
|
||||
union wtap_pseudo_header *pseudo_header;
|
||||
int len;
|
||||
int captured_len;
|
||||
address dl_src; /* link-layer source address */
|
||||
address dl_dst; /* link-layer destination address */
|
||||
address net_src; /* network-layer source address */
|
||||
address net_dst; /* network-layer destination address */
|
||||
address src; /* source address (net if present, DL otherwise )*/
|
||||
address dst; /* destination address (net if present, DL otherwise )*/
|
||||
guint32 ethertype; /* Ethernet Type Code, if this is an Ethernet packet */
|
||||
guint32 ipproto; /* IP protocol, if this is an IP packet */
|
||||
guint32 ipxptype; /* IPX packet type, if this is an IPX packet */
|
||||
gboolean fragmented; /* TRUE if the protocol is only a fragment */
|
||||
port_type ptype; /* type of the following two port numbers */
|
||||
guint32 srcport; /* source port */
|
||||
guint32 destport; /* destination port */
|
||||
guint32 match_port;
|
||||
int iplen;
|
||||
int iphdrlen;
|
||||
int p2p_dir;
|
||||
} packet_info;
|
||||
|
||||
void blank_packetinfo(void);
|
||||
|
||||
extern packet_info pi;
|
||||
|
||||
#endif /* __PACKET_INFO_H__ */
|
Loading…
Reference in New Issue