⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 print-rsvp.c

📁 TCPDUMP的C语言源代码,是在数据链路层的应用
💻 C
📖 第 1 页 / 共 5 页
字号:
/* * Copyright (c) 1998-2007 The TCPDUMP project * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that: (1) source code * distributions retain the above copyright notice and this paragraph * in its entirety, and (2) distributions including binary code include * the above copyright notice and this paragraph in its entirety in * the documentation or other materials provided with the distribution. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE. * * Original code by Hannes Gredler (hannes@juniper.net) */#ifndef lintstatic const char rcsid[] _U_ =    "@(#) $Header: /tcpdump/master/tcpdump/print-rsvp.c,v 1.48 2007-09-13 17:29:50 guy Exp $";#endif#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <tcpdump-stdinc.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include "interface.h"#include "extract.h"#include "addrtoname.h"#include "ethertype.h"#include "gmpls.h"#include "af.h"/* * RFC 2205 common header * *               0             1              2             3 *        +-------------+-------------+-------------+-------------+ *        | Vers | Flags|  Msg Type   |       RSVP Checksum       | *        +-------------+-------------+-------------+-------------+ *        |  Send_TTL   | (Reserved)  |        RSVP Length        | *        +-------------+-------------+-------------+-------------+ * */struct rsvp_common_header {    u_int8_t version_flags;    u_int8_t msg_type;    u_int8_t checksum[2];    u_int8_t ttl;    u_int8_t reserved;    u_int8_t length[2];};/*  * RFC2205 object header * *  *               0             1              2             3 *        +-------------+-------------+-------------+-------------+ *        |       Length (bytes)      |  Class-Num  |   C-Type    | *        +-------------+-------------+-------------+-------------+ *        |                                                       | *        //                  (Object contents)                   // *        |                                                       | *        +-------------+-------------+-------------+-------------+ */struct rsvp_object_header {    u_int8_t length[2];    u_int8_t class_num;    u_int8_t ctype;};#define RSVP_VERSION            1#define	RSVP_EXTRACT_VERSION(x) (((x)&0xf0)>>4) #define	RSVP_EXTRACT_FLAGS(x)   ((x)&0x0f)#define	RSVP_MSGTYPE_PATH       1#define	RSVP_MSGTYPE_RESV       2#define	RSVP_MSGTYPE_PATHERR    3#define	RSVP_MSGTYPE_RESVERR    4#define	RSVP_MSGTYPE_PATHTEAR   5#define	RSVP_MSGTYPE_RESVTEAR   6#define	RSVP_MSGTYPE_RESVCONF   7#define RSVP_MSGTYPE_AGGREGATE  12#define RSVP_MSGTYPE_ACK        13#define RSVP_MSGTYPE_HELLO_OLD  14      /* ancient Hellos */#define RSVP_MSGTYPE_SREFRESH   15#define	RSVP_MSGTYPE_HELLO      20static const struct tok rsvp_msg_type_values[] = {    { RSVP_MSGTYPE_PATH,	"Path" },    { RSVP_MSGTYPE_RESV,	"Resv" },    { RSVP_MSGTYPE_PATHERR,	"PathErr" },    { RSVP_MSGTYPE_RESVERR,	"ResvErr" },    { RSVP_MSGTYPE_PATHTEAR,	"PathTear" },    { RSVP_MSGTYPE_RESVTEAR,	"ResvTear" },    { RSVP_MSGTYPE_RESVCONF,	"ResvConf" },    { RSVP_MSGTYPE_AGGREGATE,	"Aggregate" },    { RSVP_MSGTYPE_ACK,	        "Acknowledgement" },    { RSVP_MSGTYPE_HELLO_OLD,	"Hello (Old)" },    { RSVP_MSGTYPE_SREFRESH,	"Refresh" },    { RSVP_MSGTYPE_HELLO,	"Hello" },    { 0, NULL}};static const struct tok rsvp_header_flag_values[] = {    { 0x01,	              "Refresh reduction capable" }, /* rfc2961 */    { 0, NULL}};#define	RSVP_OBJ_SESSION            1   /* rfc2205 */#define	RSVP_OBJ_RSVP_HOP           3   /* rfc2205, rfc3473 */#define	RSVP_OBJ_INTEGRITY          4   /* rfc2747 */#define	RSVP_OBJ_TIME_VALUES        5   /* rfc2205 */#define	RSVP_OBJ_ERROR_SPEC         6 #define	RSVP_OBJ_SCOPE              7#define	RSVP_OBJ_STYLE              8   /* rfc2205 */#define	RSVP_OBJ_FLOWSPEC           9   /* rfc2215 */#define	RSVP_OBJ_FILTERSPEC         10  /* rfc2215 */#define	RSVP_OBJ_SENDER_TEMPLATE    11#define	RSVP_OBJ_SENDER_TSPEC       12  /* rfc2215 */#define	RSVP_OBJ_ADSPEC             13  /* rfc2215 */#define	RSVP_OBJ_POLICY_DATA        14#define	RSVP_OBJ_CONFIRM            15  /* rfc2205 */#define	RSVP_OBJ_LABEL              16  /* rfc3209 */#define	RSVP_OBJ_LABEL_REQ          19  /* rfc3209 */#define	RSVP_OBJ_ERO                20  /* rfc3209 */#define	RSVP_OBJ_RRO                21  /* rfc3209 */#define	RSVP_OBJ_HELLO              22  /* rfc3209 */#define	RSVP_OBJ_MESSAGE_ID         23  /* rfc2961 */#define	RSVP_OBJ_MESSAGE_ID_ACK     24  /* rfc2961 */#define	RSVP_OBJ_MESSAGE_ID_LIST    25  /* rfc2961 */#define	RSVP_OBJ_RECOVERY_LABEL     34  /* rfc3473 */#define	RSVP_OBJ_UPSTREAM_LABEL     35  /* rfc3473 */#define	RSVP_OBJ_LABEL_SET          36  /* rfc3473 */#define	RSVP_OBJ_PROTECTION         37  /* rfc3473 */#define	RSVP_OBJ_DETOUR             63  /* draft-ietf-mpls-rsvp-lsp-fastreroute-07 */#define	RSVP_OBJ_CLASSTYPE          66  /* rfc4124 */#define RSVP_OBJ_CLASSTYPE_OLD      125 /* draft-ietf-tewg-diff-te-proto-07 */#define	RSVP_OBJ_SUGGESTED_LABEL    129 /* rfc3473 */#define	RSVP_OBJ_ACCEPT_LABEL_SET   130 /* rfc3473 */#define	RSVP_OBJ_RESTART_CAPABILITY 131 /* rfc3473 */#define	RSVP_OBJ_NOTIFY_REQ         195 /* rfc3473 */#define	RSVP_OBJ_ADMIN_STATUS       196 /* rfc3473 */#define	RSVP_OBJ_PROPERTIES         204 /* juniper proprietary */#define	RSVP_OBJ_FASTREROUTE        205 /* draft-ietf-mpls-rsvp-lsp-fastreroute-07 */#define	RSVP_OBJ_SESSION_ATTRIBUTE  207 /* rfc3209 */#define RSVP_OBJ_GENERALIZED_UNI    229 /* OIF RSVP extensions UNI 1.0 Signaling, Rel. 2 */#define RSVP_OBJ_CALL_ID            230 /* rfc3474 */#define RSVP_OBJ_CALL_OPS           236 /* rfc3474 */static const struct tok rsvp_obj_values[] = {    { RSVP_OBJ_SESSION,            "Session" },    { RSVP_OBJ_RSVP_HOP,           "RSVP Hop" },    { RSVP_OBJ_INTEGRITY,          "Integrity" },    { RSVP_OBJ_TIME_VALUES,        "Time Values" },    { RSVP_OBJ_ERROR_SPEC,         "Error Spec" },    { RSVP_OBJ_SCOPE,              "Scope" },    { RSVP_OBJ_STYLE,              "Style" },    { RSVP_OBJ_FLOWSPEC,           "Flowspec" },    { RSVP_OBJ_FILTERSPEC,         "FilterSpec" },    { RSVP_OBJ_SENDER_TEMPLATE,    "Sender Template" },    { RSVP_OBJ_SENDER_TSPEC,       "Sender TSpec" },    { RSVP_OBJ_ADSPEC,             "Adspec" },    { RSVP_OBJ_POLICY_DATA,        "Policy Data" },    { RSVP_OBJ_CONFIRM,            "Confirm" },    { RSVP_OBJ_LABEL,              "Label" },    { RSVP_OBJ_LABEL_REQ,          "Label Request" },    { RSVP_OBJ_ERO,                "ERO" },    { RSVP_OBJ_RRO,                "RRO" },    { RSVP_OBJ_HELLO,              "Hello" },    { RSVP_OBJ_MESSAGE_ID,         "Message ID" },    { RSVP_OBJ_MESSAGE_ID_ACK,     "Message ID Ack" },    { RSVP_OBJ_MESSAGE_ID_LIST,    "Message ID List" },    { RSVP_OBJ_RECOVERY_LABEL,     "Recovery Label" },    { RSVP_OBJ_UPSTREAM_LABEL,     "Upstream Label" },    { RSVP_OBJ_LABEL_SET,          "Label Set" },    { RSVP_OBJ_ACCEPT_LABEL_SET,   "Acceptable Label Set" },    { RSVP_OBJ_DETOUR,             "Detour" },    { RSVP_OBJ_CLASSTYPE,          "Class Type" },    { RSVP_OBJ_CLASSTYPE_OLD,      "Class Type (old)" },    { RSVP_OBJ_SUGGESTED_LABEL,    "Suggested Label" },    { RSVP_OBJ_PROPERTIES,         "Properties" },    { RSVP_OBJ_FASTREROUTE,        "Fast Re-Route" },    { RSVP_OBJ_SESSION_ATTRIBUTE,  "Session Attribute" },    { RSVP_OBJ_GENERALIZED_UNI,    "Generalized UNI" },    { RSVP_OBJ_CALL_ID,            "Call-ID" },    { RSVP_OBJ_CALL_OPS,           "Call Capability" },    { RSVP_OBJ_RESTART_CAPABILITY, "Restart Capability" },    { RSVP_OBJ_NOTIFY_REQ,         "Notify Request" },    { RSVP_OBJ_PROTECTION,         "Protection" },    { RSVP_OBJ_ADMIN_STATUS,       "Administrative Status" },    { 0, NULL}};#define	RSVP_CTYPE_IPV4        1#define	RSVP_CTYPE_IPV6        2#define	RSVP_CTYPE_TUNNEL_IPV4 7#define	RSVP_CTYPE_TUNNEL_IPV6 8#define	RSVP_CTYPE_UNI_IPV4    11 /* OIF RSVP extensions UNI 1.0 Signaling Rel. 2 */#define RSVP_CTYPE_1           1#define RSVP_CTYPE_2           2#define RSVP_CTYPE_3           3#define RSVP_CTYPE_4           4/* * the ctypes are not globally unique so for * translating it to strings we build a table based * on objects offsetted by the ctype */static const struct tok rsvp_ctype_values[] = {    { 256*RSVP_OBJ_RSVP_HOP+RSVP_CTYPE_IPV4,	             "IPv4" },    { 256*RSVP_OBJ_RSVP_HOP+RSVP_CTYPE_IPV6,	             "IPv6" },    { 256*RSVP_OBJ_RSVP_HOP+RSVP_CTYPE_3,	             "IPv4 plus opt. TLVs" },    { 256*RSVP_OBJ_RSVP_HOP+RSVP_CTYPE_4,	             "IPv6 plus opt. TLVs" },    { 256*RSVP_OBJ_NOTIFY_REQ+RSVP_CTYPE_IPV4,	             "IPv4" },    { 256*RSVP_OBJ_NOTIFY_REQ+RSVP_CTYPE_IPV6,	             "IPv6" },    { 256*RSVP_OBJ_CONFIRM+RSVP_CTYPE_IPV4,	             "IPv4" },    { 256*RSVP_OBJ_CONFIRM+RSVP_CTYPE_IPV6,	             "IPv6" },    { 256*RSVP_OBJ_TIME_VALUES+RSVP_CTYPE_1,	             "1" },    { 256*RSVP_OBJ_FLOWSPEC+RSVP_CTYPE_1,	             "obsolete" },    { 256*RSVP_OBJ_FLOWSPEC+RSVP_CTYPE_2,	             "IntServ" },    { 256*RSVP_OBJ_SENDER_TSPEC+RSVP_CTYPE_2,	             "IntServ" },    { 256*RSVP_OBJ_ADSPEC+RSVP_CTYPE_2,	                     "IntServ" },    { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_IPV4,	             "IPv4" },    { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_IPV6,	             "IPv6" },    { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_3,	             "IPv6 Flow-label" },    { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_TUNNEL_IPV4,	     "Tunnel IPv4" },    { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_IPV4,	             "IPv4" },    { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_IPV6,	             "IPv6" },    { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_TUNNEL_IPV4,           "Tunnel IPv4" },    { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_UNI_IPV4,              "UNI IPv4" },    { 256*RSVP_OBJ_SENDER_TEMPLATE+RSVP_CTYPE_IPV4,          "IPv4" },    { 256*RSVP_OBJ_SENDER_TEMPLATE+RSVP_CTYPE_IPV6,          "IPv6" },    { 256*RSVP_OBJ_SENDER_TEMPLATE+RSVP_CTYPE_TUNNEL_IPV4,   "Tunnel IPv4" },    { 256*RSVP_OBJ_MESSAGE_ID+RSVP_CTYPE_1,                  "1" },    { 256*RSVP_OBJ_MESSAGE_ID_ACK+RSVP_CTYPE_1,              "Message id ack" },    { 256*RSVP_OBJ_MESSAGE_ID_ACK+RSVP_CTYPE_2,              "Message id nack" },    { 256*RSVP_OBJ_MESSAGE_ID_LIST+RSVP_CTYPE_1,             "1" },    { 256*RSVP_OBJ_STYLE+RSVP_CTYPE_1,                       "1" },    { 256*RSVP_OBJ_HELLO+RSVP_CTYPE_1,                       "Hello Request" },    { 256*RSVP_OBJ_HELLO+RSVP_CTYPE_2,                       "Hello Ack" },    { 256*RSVP_OBJ_LABEL_REQ+RSVP_CTYPE_1,	             "without label range" },    { 256*RSVP_OBJ_LABEL_REQ+RSVP_CTYPE_2,	             "with ATM label range" },    { 256*RSVP_OBJ_LABEL_REQ+RSVP_CTYPE_3,                   "with FR label range" },    { 256*RSVP_OBJ_LABEL_REQ+RSVP_CTYPE_4,                   "Generalized Label" },    { 256*RSVP_OBJ_LABEL+RSVP_CTYPE_1,                       "Label" },    { 256*RSVP_OBJ_LABEL+RSVP_CTYPE_2,                       "Generalized Label" },    { 256*RSVP_OBJ_LABEL+RSVP_CTYPE_3,                       "Waveband Switching" },    { 256*RSVP_OBJ_SUGGESTED_LABEL+RSVP_CTYPE_1,             "Label" },    { 256*RSVP_OBJ_SUGGESTED_LABEL+RSVP_CTYPE_2,             "Generalized Label" },    { 256*RSVP_OBJ_SUGGESTED_LABEL+RSVP_CTYPE_3,             "Waveband Switching" },    { 256*RSVP_OBJ_UPSTREAM_LABEL+RSVP_CTYPE_1,              "Label" },    { 256*RSVP_OBJ_UPSTREAM_LABEL+RSVP_CTYPE_2,              "Generalized Label" },    { 256*RSVP_OBJ_UPSTREAM_LABEL+RSVP_CTYPE_3,              "Waveband Switching" },    { 256*RSVP_OBJ_RECOVERY_LABEL+RSVP_CTYPE_1,              "Label" },    { 256*RSVP_OBJ_RECOVERY_LABEL+RSVP_CTYPE_2,              "Generalized Label" },    { 256*RSVP_OBJ_RECOVERY_LABEL+RSVP_CTYPE_3,              "Waveband Switching" },    { 256*RSVP_OBJ_ERO+RSVP_CTYPE_IPV4,                      "IPv4" },    { 256*RSVP_OBJ_RRO+RSVP_CTYPE_IPV4,                      "IPv4" },    { 256*RSVP_OBJ_ERROR_SPEC+RSVP_CTYPE_IPV4,               "IPv4" },    { 256*RSVP_OBJ_ERROR_SPEC+RSVP_CTYPE_IPV6,               "IPv6" },    { 256*RSVP_OBJ_ERROR_SPEC+RSVP_CTYPE_3,                  "IPv4 plus opt. TLVs" },    { 256*RSVP_OBJ_ERROR_SPEC+RSVP_CTYPE_4,                  "IPv6 plus opt. TLVs" },    { 256*RSVP_OBJ_RESTART_CAPABILITY+RSVP_CTYPE_1,          "IPv4" },    { 256*RSVP_OBJ_SESSION_ATTRIBUTE+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" },    { 256*RSVP_OBJ_FASTREROUTE+RSVP_CTYPE_TUNNEL_IPV4,       "Tunnel IPv4" }, /* old style*/    { 256*RSVP_OBJ_FASTREROUTE+RSVP_CTYPE_1,                 "1" }, /* new style */    { 256*RSVP_OBJ_DETOUR+RSVP_CTYPE_TUNNEL_IPV4,            "Tunnel IPv4" },    { 256*RSVP_OBJ_PROPERTIES+RSVP_CTYPE_1,                  "1" },    { 256*RSVP_OBJ_ADMIN_STATUS+RSVP_CTYPE_1,                "1" },    { 256*RSVP_OBJ_CLASSTYPE+RSVP_CTYPE_1,                   "1" },    { 256*RSVP_OBJ_CLASSTYPE_OLD+RSVP_CTYPE_1,               "1" },    { 256*RSVP_OBJ_LABEL_SET+RSVP_CTYPE_1,                   "1" },    { 256*RSVP_OBJ_GENERALIZED_UNI+RSVP_CTYPE_1,             "1" },    { 0, NULL}};struct rsvp_obj_integrity_t {    u_int8_t flags;    u_int8_t res;    u_int8_t key_id[6];    u_int8_t sequence[8];    u_int8_t digest[16];};static const struct tok rsvp_obj_integrity_flag_values[] = {    { 0x80, "Handshake" },    { 0, NULL}};struct rsvp_obj_frr_t {    u_int8_t setup_prio;    u_int8_t hold_prio;    u_int8_t hop_limit;    u_int8_t flags;    u_int8_t bandwidth[4];    u_int8_t include_any[4];    u_int8_t exclude_any[4];    u_int8_t include_all[4];};#define RSVP_OBJ_XRO_MASK_SUBOBJ(x)   ((x)&0x7f)#define RSVP_OBJ_XRO_MASK_LOOSE(x)    ((x)&0x80)#define	RSVP_OBJ_XRO_RES       0#define	RSVP_OBJ_XRO_IPV4      1#define	RSVP_OBJ_XRO_IPV6      2#define	RSVP_OBJ_XRO_ASN       32#define	RSVP_OBJ_XRO_MPLS      64static const struct tok rsvp_obj_xro_values[] = {    { RSVP_OBJ_XRO_RES,	      "Reserved" },    { RSVP_OBJ_XRO_IPV4,      "IPv4 prefix" },    { RSVP_OBJ_XRO_IPV6,      "IPv6 prefix" },    { RSVP_OBJ_XRO_ASN,       "Autonomous system number" },    { RSVP_OBJ_XRO_MPLS,      "MPLS label switched path termination" },    { 0, NULL}};/* draft-ietf-mpls-rsvp-lsp-fastreroute-07.txt */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -