wireshark/epan/dissectors/packet-isis.h
Guy Harris ec2ca11c9c Clean up a number of things.
Pass to the routines that handle particular ISIS PDU types a tvbuff for
the *full* PDU; some PDU types may have a checksum CLV type that
checksums the *entire* PDU.

Pass an isis_data_t * around to various routines, rather than passing
some individual bits of information around.

Add to that structure:

	the PDU length from the common-to-all-PDU-types part of the ISIS
	header;

	a proto_item * for the header length field;

	an expert_field * for a "the header length is bad" error.

Use the PDU length from that structure when handling the aforementioned
checksum CLV.

When dissecting the PDU-type-specific part of the ISIS header, check to
make sure we're not going past the header length and, if we are, report
it with an expert info, using the header length field proto_item * and
expert_field * from that structure.

Show the type field in sub-TLVs of the Group Address TLV (RFC 7176
section 2.1) and, if the type is unknown, add a top-level item with the
type and length fields under it.

This fixes some bugs.

Bug: 16477
Change-Id: I875306d9d4fd8f65a60b7a6d3be7e356afabe851
Reviewed-on: https://code.wireshark.org/review/36671
Petri-Dish: Guy Harris <gharris@sonic.net>
Tested-by: Petri Dish Buildbot
Reviewed-by: Guy Harris <gharris@sonic.net>
2020-04-03 00:21:37 +00:00

64 lines
1.3 KiB
C

/* packet-isis.h
* Defines and such for core isis protcol decode.
*
* Stuart Stanley <stuarts@mxmail.net>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef _PACKET_ISIS_H
#define _PACKET_ISIS_H
/*
* The version we support is 1
*/
#define ISIS_REQUIRED_VERSION 1
/*
* ISIS type field values
*/
#define ISIS_TYPE_L1_HELLO 15
#define ISIS_TYPE_L2_HELLO 16
#define ISIS_TYPE_PTP_HELLO 17
#define ISIS_TYPE_L1_LSP 18
#define ISIS_TYPE_L2_LSP 20
#define ISIS_TYPE_L1_CSNP 24
#define ISIS_TYPE_L2_CSNP 25
#define ISIS_TYPE_L1_PSNP 26
#define ISIS_TYPE_L2_PSNP 27
#define ISIS_TYPE_MASK 0x1f
#define ISIS_TYPE_RESERVED_MASK 0xe0
/*
* Data given to subdissectors
*/
typedef struct isis_data {
guint8 header_length;
guint8 system_id_len;
guint16 pdu_length;
proto_item *header_length_item;
expert_field *ei_bad_header_length;
} isis_data_t;
extern int hf_isis_clv_key_id;
#endif /* _PACKET_ISIS_H */
/*
* Editor modelines - https://www.wireshark.org/tools/modelines.html
*
* Local variables:
* c-basic-offset: 4
* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* vi: set shiftwidth=4 tabstop=8 expandtab:
* :indentSize=4:tabSize=8:noTabs=true:
*/