diff options
Diffstat (limited to 'packet-rsvp.h')
-rw-r--r-- | packet-rsvp.h | 439 |
1 files changed, 2 insertions, 437 deletions
diff --git a/packet-rsvp.h b/packet-rsvp.h index fea398bc74..f700ca0e4e 100644 --- a/packet-rsvp.h +++ b/packet-rsvp.h @@ -4,445 +4,10 @@ * * (C) Ashok Narayanan <ashokn@cisco.com> * - * $Id: packet-rsvp.h,v 1.7 1999/11/18 01:45:02 guy Exp $ + * $Id: packet-rsvp.h,v 1.8 2000/02/15 21:03:03 gram Exp $ * * For license details, see the COPYING file with this distribution * **********************************************************************/ -#ifndef PACKET_RSVP_H -#define PACKET_RSVP_H - -/* - * RSVP message types - */ -typedef enum { - RSVP_MSG_PATH=1, RSVP_MSG_RESV, RSVP_MSG_PERR, RSVP_MSG_RERR, - RSVP_MSG_PTEAR, RSVP_MSG_RTEAR, RSVP_MSG_CONFIRM, - RSVP_MSG_RTEAR_CONFIRM=10 -} rsvp_message_types; - -static value_string message_type_vals[] = { - {RSVP_MSG_PATH, "PATH Message"}, - {RSVP_MSG_RESV, "RESV Message"}, - {RSVP_MSG_PERR, "PATH ERROR Message"}, - {RSVP_MSG_RERR, "RESV ERROR Message"}, - {RSVP_MSG_PTEAR, "PATH TEAR Message"}, - {RSVP_MSG_RTEAR, "RESV TEAR Message"}, - {RSVP_MSG_CONFIRM, "CONFIRM Message"}, - {RSVP_MSG_RTEAR_CONFIRM, "RESV TEAR CONFIRM Message"} -}; - -/* - * RSVP classes - */ -#define MAX_RSVP_CLASS 15 - -enum rsvp_classes { - RSVP_CLASS_NULL=0, - RSVP_CLASS_SESSION, - RSVP_CLASS_HOP=3, - RSVP_CLASS_INTEGRITY, - RSVP_CLASS_TIME_VALUES, - RSVP_CLASS_ERROR, - RSVP_CLASS_SCOPE, - RSVP_CLASS_STYLE, - RSVP_CLASS_FLOWSPEC, - RSVP_CLASS_FILTER_SPEC, - RSVP_CLASS_SENDER_TEMPLATE, - RSVP_CLASS_SENDER_TSPEC, - RSVP_CLASS_ADSPEC, - RSVP_CLASS_POLICY, - RSVP_CLASS_CONFIRM -}; - -static value_string rsvp_class_vals[] = { - {RSVP_CLASS_NULL, "NULL object"}, - {RSVP_CLASS_SESSION, "SESSION object"}, - {RSVP_CLASS_HOP, "HOP object"}, - {RSVP_CLASS_INTEGRITY, "INTEGRITY object"}, - {RSVP_CLASS_TIME_VALUES, "TIME VALUES object"}, - {RSVP_CLASS_ERROR, "ERROR object"}, - {RSVP_CLASS_SCOPE, "SCOPE object"}, - {RSVP_CLASS_STYLE, "STYLE object"}, - {RSVP_CLASS_FLOWSPEC, "FLOWSPEC object"}, - {RSVP_CLASS_FILTER_SPEC, "FILTER SPEC object"}, - {RSVP_CLASS_SENDER_TEMPLATE, "SENDER TEMPLATE object"}, - {RSVP_CLASS_SENDER_TSPEC, "SENDER TSPEC object"}, - {RSVP_CLASS_ADSPEC, "ADSPEC object"}, - {RSVP_CLASS_POLICY, "POLICY object"}, - {RSVP_CLASS_CONFIRM, "CONFIRM object"} -}; - -/* - * RSVP error values - */ -enum rsvp_error_types { - RSVP_ERROR_CONFIRM = 0, - RSVP_ERROR_ADMISSION, - RSVP_ERROR_POLICY, - RSVP_ERROR_NO_PATH, - RSVP_ERROR_NO_SENDER, - RSVP_ERROR_CONFLICT_RESV_STYLE, - RSVP_ERROR_UNKNOWN_RESV_STYLE, - RSVP_ERROR_CONFLICT_DEST_PORTS, - RSVP_ERROR_CONFLICT_SRC_PORTS, - RSVP_ERROR_PREEMPTED=12, - RSVP_ERROR_UNKNOWN_CLASS, - RSVP_ERROR_UNKNOWN_C_TYPE, - RSVP_ERROR_TRAFFIC = 21, - RSVP_ERROR_TRAFFIC_SYSTEM, - RSVP_ERROR_SYSTEM -}; - -static value_string rsvp_error_vals[] = { - {RSVP_ERROR_CONFIRM, "Confirmation"}, - {RSVP_ERROR_ADMISSION, "Admission Control Failure "}, - {RSVP_ERROR_POLICY, "Policy Control Failure"}, - {RSVP_ERROR_NO_PATH, "No PATH information for this RESV message"}, - {RSVP_ERROR_NO_SENDER, "No sender information for this RESV message"}, - {RSVP_ERROR_CONFLICT_RESV_STYLE, "Conflicting reservation styles"}, - {RSVP_ERROR_UNKNOWN_RESV_STYLE, "Unknown reservation style"}, - {RSVP_ERROR_CONFLICT_DEST_PORTS, "Conflicting destination ports"}, - {RSVP_ERROR_CONFLICT_SRC_PORTS, "Conflicting source ports"}, - {RSVP_ERROR_PREEMPTED, "Service preempted"}, - {RSVP_ERROR_UNKNOWN_CLASS, "Unknown object class"}, - {RSVP_ERROR_UNKNOWN_C_TYPE, "Unknown object C-type"}, - {RSVP_ERROR_TRAFFIC, "Traffic Control Error"}, - {RSVP_ERROR_TRAFFIC_SYSTEM, "Traffic Control System Error"} -}; - -/* - * Defines the reservation style plus style-specific information that - * is not a FLOWSPEC or FILTER_SPEC object, in a RESV message. - */ -#define RSVP_DISTINCT (1 << 3) -#define RSVP_SHARED (2 << 3) -#define RSVP_SHARING_MASK (RSVP_DISTINCT | RSVP_SHARED) - -#define RSVP_SCOPE_WILD 1 -#define RSVP_SCOPE_EXPLICIT 2 -#define RSVP_SCOPE_MASK 0x07 - -#define RSVP_WF (RSVP_SHARED | RSVP_SCOPE_WILD) -#define RSVP_FF (RSVP_DISTINCT | RSVP_SCOPE_EXPLICIT) -#define RSVP_SE (RSVP_SHARED | RSVP_SCOPE_EXPLICIT) - -static value_string style_vals[] = { - { RSVP_WF, "Wildcard Filter" }, - { RSVP_FF, "Fixed Filter" }, - { RSVP_SE, "Shared-Explicit" } -}; - -/*------------------------------* - * Object definitions - *------------------------------*/ - -/* - * Base RSVP object - */ -typedef struct { - guint16 length; - guint8 class; - guint8 type; - /* Data follows, as a sequence of bytes */ -} rsvp_object; - -/* - * RSVP message header - */ - -typedef struct { - guint8 ver_flags; /* RSVP Version & flags */ - guint8 message_type; /* type of message */ - guint16 cksum; /* IP Checksum */ - guint8 sending_ttl; /* ttl of message */ - guint8 reserved_byte; /* reserved */ - guint16 rsvp_length; /* length of RSVP data */ - /* Objects follow, as a sequence of "rsvp_object"s */ -} rsvp_header; - -/* - * NULL object -*/ -typedef struct { - rsvp_object base; -} rsvp_null; - -/* - * SESSION object - */ -typedef struct { - rsvp_object base; - guint32 destination; - guint8 protocol; - guint8 flags; - guint16 port; -} rsvp_session_ipv4; - -typedef struct { - rsvp_object base; - struct e_in6_addr destination; - guint8 protocol; - guint8 flags; - guint16 port; -} rsvp_session_ipv6; - -/* - * HOP object - * Can be a PHOP or a NHOP - */ -typedef struct { - rsvp_object base; - guint32 neighbor; - guint32 lif_handle; -} rsvp_hop_ipv4; - -typedef struct { - rsvp_object base; - struct e_in6_addr neighbor; - guint32 lif_handle; -} rsvp_hop_ipv6; - -/* - * TIME_VALUES object - */ -typedef struct { - rsvp_object base; - gint32 refresh_ms; -} rsvp_time_values; - -/* - * ERROR object - */ -typedef struct { - rsvp_object base; - guint32 error_node; - guint8 flags; - guint8 error_code; - guint16 error_value; -} rsvp_error_ipv4; - -typedef struct { - rsvp_object base; - struct e_in6_addr error_node; - guint8 flags; - guint8 error_code; - guint16 error_value; -} rsvp_error_ipv6; - -/* - * CONFIRM object - */ -typedef struct { - rsvp_object base; - guint32 receiver; -} rsvp_confirm_ipv4; - -typedef struct { - rsvp_object base; - struct e_in6_addr receiver; -} rsvp_confirm_ipv6; - -/* - * SCOPE object - */ -typedef struct { - rsvp_object base; - /* Source follows, as a sequence of 32-bit integers */ -} rsvp_scope; - -/* - * STYLE object - */ -typedef struct { - rsvp_object base; - guint32 reservation_type; -} rsvp_style; - -/* - * Defines a subset of session data packets that should receive the - * desired QoS (specified by an FLOWSPEC object), in a RESV message. - */ -typedef struct { - rsvp_object base; - guint32 source; /* source sending data */ - guint16 unused; - guint16 udp_source_port; /* port number */ -} rsvp_filter_ipv4; - -/* - * Contains a sender IP address and perhaps some additional - * demultiplexing information to identify a sender, in a PATH - * message. - */ -typedef struct { - rsvp_object base; - guint32 source; /* source sending data */ - guint16 __reserved; - guint16 source_port; /* port number */ -} rsvp_template_ipv4; - -typedef struct { - rsvp_object base; - struct e_in6_addr source; /* source sending data */ - guint16 __reserved; - guint16 source_port; /* port number */ -} rsvp_template_ipv6; - -/* - * Defines a desired QoS, in a RESV message. - */ -enum qos_service_type { - QOS_QUALITATIVE = 128, /* Qualitative service */ - QOS_CONTROLLED_LOAD= 5, /* Controlled Load Service */ - QOS_GUARANTEED = 2, /* Guaranteed service */ - QOS_TSPEC = 1 /* Traffic specification */ - }; - -static value_string qos_vals[] = { - { QOS_QUALITATIVE, "Qualitative QoS" }, - { QOS_CONTROLLED_LOAD, "Controlled-load QoS" }, - { QOS_GUARANTEED, "Guaranteed rate QoS" }, - { QOS_TSPEC, "Traffic specification" }, -}; - -static value_string svc_vals[] = { - { 127, "Token bucket TSpec" }, - { 128, "Qualitative TSpec" }, - { 130, "Guaranteed-rate RSpec" } -}; - -enum rsvp_spec_types { INTSRV = 2 }; - -enum intsrv_services { - INTSRV_GENERAL = 1, - INTSRV_GTD = 2, - INTSRV_CLOAD = 5, - INTSRV_QUALITATIVE = 128 -}; - -static value_string intsrv_services_str[] = { - {INTSRV_GENERAL, "Default General Parameters"}, - {INTSRV_GTD, "Guaranteed"}, - {INTSRV_CLOAD, "Controlled Load"}, - {INTSRV_QUALITATIVE, "Qualitative"}, -}; - -enum intsrv_field_name { - INTSRV_NON_IS_HOPS = 1, INTSRV_COMPOSED_NON_IS_HOPS, - INTSRV_IS_HOPS, INTSRV_COMPOSED_IS_HOPS, - INTSRV_PATH_BANDWIDTH, INTSRV_MIN_PATH_BANDWIDTH, - INTSRV_IF_LATENCY, INTSRV_PATH_LATENCY, - INTSRV_MTU, INTSRV_COMPOSED_MTU, - - INTSRV_TOKEN_BUCKET_TSPEC = 127, - INTSRV_QUALITATIVE_TSPEC = 128, - INTSRV_GTD_RSPEC = 130, - - INTSRV_DELAY = 131, /* Gtd Parameter C - Max Delay Bound - bytes */ - INTSRV_MAX_JITTER, /* Gtd Parameter D - Max Jitter */ - INTSRV_E2E_DELAY, /* Gtd Parameter Ctot */ - INTSRV_E2E_MAX_JITTER, /* Gtd Parameter Dtot */ - INTSRV_SHP_DELAY, /* Gtd Parameter Csum */ - INTSRV_SHP_MAX_JITTER /* Gtd Parameter Dsum */ -}; - -/* - * Subobjects for Integrated Services - */ - -typedef struct { - guint8 service_num; - guint8 break_bit; - guint16 length; -} service_hdr; - -typedef struct { - service_hdr svchdr; - - guint8 param_id; - guint8 flags_tspec; - guint16 parameter_length; - - guint32 rate; - guint32 depth; - guint32 peak; - guint32 min_unit; - guint32 max_unit; -} IS_tspec; /* RFC2210 */ - -typedef struct { - service_hdr svchdr; - - guint8 param_id; - guint8 flags_tspec; - guint16 parameter_length; - - guint32 max_unit; -} QUAL_tspec; /* Qualitative */ - -typedef struct { - rsvp_object base; - guint8 version; - guint8 __reserved_; - guint16 length_in_words; - - /* Data follows, as a sequence of bytes */ -} rsvp_tspec; - -typedef struct { - guint8 param_id; - guint8 flags_rspec; - guint16 param2_length; - guint32 requested_rate; - guint32 slack; -} IS_rspec; - -typedef struct { - IS_tspec tspec; - IS_rspec rspec; -} IS_flowspec; /* RFC 2210 */ - -typedef struct { - service_hdr svchdr; - - guint8 param_id; - guint8 flags_tspec; - guint16 parameter_length; - - guint32 max_unit; -} QUAL_flowspec; /* Qualitative */ - - -typedef struct { - rsvp_object base; - guint8 version; - guint8 __reserved_; - guint16 length_in_words; - - /* Data follows, as a sequence of bytes */ -} rsvp_flowspec; - - -typedef struct { - guint8 id; - guint8 flags; - guint16 length; - guint32 dataval; -} param_hdr; - -static value_string adspec_params[] = { - {4, "IS Hop Count"}, - {6, "Path b/w estimate"}, - {8, "Minimum path latency"}, - {10, "Composed MTU"}, - {133, "End-to-end composed value for C"}, - {134, "End-to-end composed value for D"}, - {135, "Since-last-reshaping point composed C"}, - {136, "Since-last-reshaping point composed D"}, -}; - - - -#endif +void dissect_rsvp(const u_char *, int, frame_data *, proto_tree *); |