2009-07-08 06:07:21 +00:00
|
|
|
/*
|
|
|
|
* Copyright 2006-2007 The MITRE Corporation.
|
|
|
|
* All Rights Reserved.
|
|
|
|
* Approved for Public Release; Distribution Unlimited.
|
|
|
|
* Tracking Number 07-0090.
|
|
|
|
*
|
2013-10-13 19:56:52 +00:00
|
|
|
* The US Government will not be charged any license fee and/or royalties
|
|
|
|
* related to this software. Neither name of The MITRE Corporation; nor the
|
|
|
|
* names of its contributors may be used to endorse or promote products
|
2009-07-08 06:07:21 +00:00
|
|
|
* derived from this software without specific prior written permission.
|
|
|
|
*
|
|
|
|
* Wireshark - Network traffic analyzer
|
|
|
|
* By Gerald Combs <gerald@wireshark.org>
|
|
|
|
* Copyright 1998 Gerald Combs
|
|
|
|
*
|
2018-02-12 11:23:27 +00:00
|
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
2009-07-08 06:07:21 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/* TCP Convergence Layer - Message Types */
|
|
|
|
#define TCP_CONV_MSG_TYPE_DATA 0x01
|
|
|
|
#define TCP_CONV_MSG_TYPE_ACK 0x02
|
|
|
|
#define TCP_CONV_MSG_TYPE_KEEP_ALIVE 0x03
|
|
|
|
#define TCP_CONV_MSG_TYPE_SHUTDOWN 0x04
|
|
|
|
|
|
|
|
/* TCP Convergence Layer (3) - Message Types */
|
|
|
|
#define TCP_CONVERGENCE_TYPE_MASK 0xf0
|
|
|
|
#define TCP_CONVERGENCE_DATA_SEGMENT 0x10
|
|
|
|
#define TCP_CONVERGENCE_ACK_SEGMENT 0x20
|
|
|
|
#define TCP_CONVERGENCE_REFUSE_BUNDLE 0x30
|
|
|
|
#define TCP_CONVERGENCE_KEEP_ALIVE 0x40
|
|
|
|
#define TCP_CONVERGENCE_SHUTDOWN 0x50
|
|
|
|
|
|
|
|
/* TCP Convergence Layer - Contact Header Flags */
|
|
|
|
#define TCP_CONV_BUNDLE_ACK_FLAG 0x01
|
|
|
|
#define TCP_CONV_REACTIVE_FRAG_FLAG 0x02
|
|
|
|
#define TCP_CONV_CONNECTOR_RCVR_FLAG 0x04
|
|
|
|
|
|
|
|
/* TCP Convergence Layer - Data Segment Flags */
|
|
|
|
#define TCP_CONVERGENCE_DATA_FLAGS 0x03
|
|
|
|
#define TCP_CONVERGENCE_DATA_END_FLAG 0x01
|
|
|
|
#define TCP_CONVERGENCE_DATA_START_FLAG 0x02
|
|
|
|
|
|
|
|
/* TCP Convergence Layer - Shutdown Segment Flags */
|
|
|
|
#define TCP_CONVERGENCE_SHUTDOWN_FLAGS 0x03
|
|
|
|
#define TCP_CONVERGENCE_SHUTDOWN_REASON 0x02
|
|
|
|
#define TCP_CONVERGENCE_SHUTDOWN_DELAY 0x01
|
|
|
|
|
|
|
|
/*
|
|
|
|
* TCP Convergence Layer - Minimum buffer sizes
|
|
|
|
* For Data Packet require 5 bytes fixed plus
|
|
|
|
* up to 4 additional for length SDV
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define TCP_CONV_MIN_DATA_BUFFER 9
|
|
|
|
|
|
|
|
|
|
|
|
#define BUNDLE_PROCFLAGS_FRAG_MASK 0x01
|
|
|
|
#define BUNDLE_PROCFLAGS_ADMIN_MASK 0x02
|
|
|
|
#define BUNDLE_PROCFLAGS_DONTFRAG_MASK 0x04
|
|
|
|
#define BUNDLE_PROCFLAGS_XFERREQ_MASK 0x08
|
|
|
|
#define BUNDLE_PROCFLAGS_SINGLETON_MASK 0x10
|
|
|
|
#define BUNDLE_PROCFLAGS_APP_ACK_MASK 0x20
|
|
|
|
|
|
|
|
#define BUNDLE_COSFLAGS_PRIORITY_MASK 0x03
|
|
|
|
#define BUNDLE_COSFLAGS_PRIORITY_BULK 0x00
|
|
|
|
#define BUNDLE_COSFLAGS_PRIORITY_NORMAL 0x01
|
2010-02-20 11:06:16 +00:00
|
|
|
#define BUNDLE_COSFLAGS_PRIORITY_EXP 0x02
|
2009-07-08 06:07:21 +00:00
|
|
|
|
|
|
|
#define BUNDLE_SRRFLAGS_REPORT_MASK 0x01
|
|
|
|
#define BUNDLE_SRRFLAGS_CUSTODY_MASK 0x02
|
|
|
|
#define BUNDLE_SRRFLAGS_FORWARD_MASK 0x04
|
|
|
|
#define BUNDLE_SRRFLAGS_DELIVERY_MASK 0x08
|
|
|
|
#define BUNDLE_SRRFLAGS_DELETION_MASK 0x10
|
|
|
|
#define BUNDLE_SRRFLAGS_ACK_MASK 0x20
|
|
|
|
|
|
|
|
/* Header Processing Flags (non-primary) */
|
|
|
|
#define HEADER_PROCFLAGS_REPLICATE 0x01
|
|
|
|
#define HEADER_PROCFLAGS_XMIT_STATUS 0x02
|
|
|
|
#define HEADER_PROCFLAGS_DISCARD 0x04
|
|
|
|
#define HEADER_PROCFLAGS_LAST_HEADER 0x08
|
|
|
|
|
|
|
|
/* Header Types (excluding Primary Header) */
|
2012-05-08 14:17:16 +00:00
|
|
|
#define BUNDLE_BLOCK_TYPE_PAYLOAD 0x01 /* RFC5050 */
|
|
|
|
#define BUNDLE_BLOCK_TYPE_AUTHENTICATION 0x02 /* RFC6257 */
|
|
|
|
#define BUNDLE_BLOCK_TYPE_INTEGRITY 0x03 /* RFC6257 */
|
|
|
|
#define BUNDLE_BLOCK_TYPE_CONFIDENTIALITY 0x04 /* RFC6257 */
|
|
|
|
#define BUNDLE_BLOCK_TYPE_PREVIOUS_HOP_INSERT 0x05 /* RFC6259 */
|
|
|
|
#define BUNDLE_BLOCK_TYPE_METADATA_EXTENSION 0x08 /* RFC6258 */
|
|
|
|
#define BUNDLE_BLOCK_TYPE_EXTENSION_SECURITY 0x09 /* RFC6257 */
|
|
|
|
#define BUNDLE_BLOCK_TYPE_CUSTODY_TRANSFER 0x0a /* http://bioserve.colorado.edu/bp-acs/ */
|
2012-05-23 06:25:00 +00:00
|
|
|
#define BUNDLE_BLOCK_TYPE_EXTENDED_COS 0x13 /* http://tools.ietf.org/html/draft-irtf-dtnrg-ecos-02 */
|
2018-09-17 13:22:32 +00:00
|
|
|
#define BUNDLE_BLOCK_TYPE_BUNDLE_AGE 0x14 /* https://tools.ietf.org/html/draft-irtf-dtnrg-bundle-age-block-01 */
|
2009-07-08 06:07:21 +00:00
|
|
|
|
|
|
|
/* Payload Header Processing Flags */
|
|
|
|
#define PAYLOAD_PROCFLAGS_REPLICATE_MASK 0x01
|
|
|
|
#define PAYLOAD_PROCFLAGS_XMIT_STATUS 0x02
|
|
|
|
#define PAYLOAD_PROCFLAGS_DISCARD_FAILURE 0x04
|
|
|
|
#define PAYLOAD_PROCFLAGS_LAST_HEADER 0x08
|
|
|
|
|
|
|
|
/* Header Fixed Sizes */
|
|
|
|
#define TCP_CONV_HDR_DATA_FIXED_LENGTH 5
|
|
|
|
#define TCP_CONV_HDR_ACK_LENGTH 9
|
|
|
|
#define TCP_CONV_HDR_KEEP_ALIVE_LENGTH 1
|
|
|
|
#define TCP_CONV_HDR_SHUTDOWN_LENGTH 1
|
|
|
|
|
|
|
|
/* Administrative Record Definitions */
|
2012-05-02 12:47:59 +00:00
|
|
|
#define ADMIN_REC_TYPE_STATUS_REPORT 0x01
|
|
|
|
#define ADMIN_REC_TYPE_CUSTODY_SIGNAL 0x02
|
|
|
|
#define ADMIN_REC_TYPE_AGGREGATE_CUSTODY_SIGNAL 0x04
|
|
|
|
#define ADMIN_REC_TYPE_ANNOUNCE_BUNDLE 0x05
|
2009-07-08 06:07:21 +00:00
|
|
|
|
|
|
|
#define ADMIN_REC_FLAGS_FRAGMENT 0x01
|
|
|
|
#define ADMIN_REC_CUSTODY_REASON_MASK 0x7f
|
|
|
|
|
|
|
|
/* Bundle Status Report Flags */
|
|
|
|
#define ADMIN_STATUS_FLAGS_RECEIVED 0x01
|
|
|
|
#define ADMIN_STATUS_FLAGS_ACCEPTED 0x02
|
|
|
|
#define ADMIN_STATUS_FLAGS_FORWARDED 0x04
|
|
|
|
#define ADMIN_STATUS_FLAGS_DELIVERED 0x08
|
|
|
|
#define ADMIN_STATUS_FLAGS_DELETED 0x10
|
|
|
|
#define ADMIN_STATUS_FLAGS_ACKNOWLEDGED 0x20
|
|
|
|
|
|
|
|
/* Block Processing Control Flags (Version 5) */
|
|
|
|
#define BLOCK_CONTROL_REPLICATE 0x01
|
|
|
|
#define BLOCK_CONTROL_TRANSMIT_STATUS 0x02
|
|
|
|
#define BLOCK_CONTROL_DELETE_BUNDLE 0x04
|
|
|
|
#define BLOCK_CONTROL_LAST_BLOCK 0x08
|
|
|
|
#define BLOCK_CONTROL_DISCARD_BLOCK 0x10
|
|
|
|
#define BLOCK_CONTROL_NOT_PROCESSED 0x20
|
|
|
|
#define BLOCK_CONTROL_EID_REFERENCE 0x40
|
|
|
|
|
2012-05-23 06:25:00 +00:00
|
|
|
/* ECOS Flags */
|
|
|
|
#define ECOS_FLAGS_CRITICAL 0x01
|
|
|
|
#define ECOS_FLAGS_STREAMING 0x02
|
2016-03-03 02:39:12 +00:00
|
|
|
#define ECOS_FLAGS_FLOWLABEL 0x04
|
|
|
|
#define ECOS_FLAGS_RELIABLE 0x08
|
2012-05-23 06:25:00 +00:00
|
|
|
|
2018-09-17 13:22:32 +00:00
|
|
|
/* Ciphersuite Flags */
|
|
|
|
#define BLOCK_CIPHERSUITE_PARAMS 0x01
|
|
|
|
|
2016-06-27 06:08:28 +00:00
|
|
|
#define DTN_SCHEME_STR "dtn"
|
|
|
|
#define IPN_SCHEME_STR "ipn"
|
2009-11-29 19:11:55 +00:00
|
|
|
|
|
|
|
int evaluate_sdnv(tvbuff_t *tvb, int offset, int *bytecount);
|
|
|
|
gint64 evaluate_sdnv_64(tvbuff_t *tvb, int offset, int *bytecount);
|
|
|
|
|
|
|
|
|
2016-03-03 02:39:12 +00:00
|
|
|
/* Special Functions to evaluate unsigned SDNVs with error indication
|
|
|
|
* bytecount returns the number bytes consumed
|
|
|
|
* value returns the actual value
|
|
|
|
*
|
|
|
|
* result is TRUE (1) on success else FALSE (0)
|
|
|
|
*/
|
|
|
|
int evaluate_sdnv32(tvbuff_t *tvb, int offset, int *bytecount, guint32 *value);
|
|
|
|
int evaluate_sdnv64(tvbuff_t *tvb, int offset, int *bytecount, guint64 *value);
|
2016-06-27 06:08:28 +00:00
|
|
|
|
|
|
|
/*
|
2019-07-26 18:43:17 +00:00
|
|
|
* Editor modelines - https://www.wireshark.org/tools/modelines.html
|
2016-06-27 06:08:28 +00:00
|
|
|
*
|
|
|
|
* 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:
|
|
|
|
*/
|