12949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Copyright (c) 1998-2007 The TCPDUMP project 32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Redistribution and use in source and binary forms, with or without 52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * modification, are permitted provided that: (1) source code 62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * distributions retain the above copyright notice and this paragraph 72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * in its entirety, and (2) distributions including binary code include 82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * the above copyright notice and this paragraph in its entirety in 92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * the documentation or other materials provided with the distribution. 102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * THIS SOFTWARE IS PROVIDED ``AS IS'' AND 112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT 122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * FOR A PARTICULAR PURPOSE. 142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Original code by Hannes Gredler (hannes@juniper.net) 162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef lint 192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const char rcsid[] _U_ = 202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "@(#) $Header: /tcpdump/master/tcpdump/print-rsvp.c,v 1.33.2.15 2007/09/13 17:33:54 guy Exp $"; 212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef HAVE_CONFIG_H 242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "config.h" 252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <tcpdump-stdinc.h> 282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <stdio.h> 302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <stdlib.h> 312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <string.h> 322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "interface.h" 342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "extract.h" 352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "addrtoname.h" 362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "ethertype.h" 372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "gmpls.h" 382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "af.h" 392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * RFC 2205 common header 422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-------------+-------------+-------------+-------------+ 452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Vers | Flags| Msg Type | RSVP Checksum | 462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-------------+-------------+-------------+-------------+ 472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Send_TTL | (Reserved) | RSVP Length | 482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-------------+-------------+-------------+-------------+ 492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct rsvp_common_header { 532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t version_flags; 542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t msg_type; 552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t checksum[2]; 562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t ttl; 572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t reserved; 582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t length[2]; 592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * RFC2205 object header 632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-------------+-------------+-------------+-------------+ 672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Length (bytes) | Class-Num | C-Type | 682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-------------+-------------+-------------+-------------+ 692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * // (Object contents) // 712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-------------+-------------+-------------+-------------+ 732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct rsvp_object_header { 762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t length[2]; 772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t class_num; 782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t ctype; 792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_VERSION 1 822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_EXTRACT_VERSION(x) (((x)&0xf0)>>4) 832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_EXTRACT_FLAGS(x) ((x)&0x0f) 842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_PATH 1 862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_RESV 2 872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_PATHERR 3 882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_RESVERR 4 892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_PATHTEAR 5 902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_RESVTEAR 6 912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_RESVCONF 7 922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_AGGREGATE 12 932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_ACK 13 942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_HELLO_OLD 14 /* ancient Hellos */ 952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_SREFRESH 15 962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_HELLO 20 972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_msg_type_values[] = { 992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_PATH, "Path" }, 1002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_RESV, "Resv" }, 1012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_PATHERR, "PathErr" }, 1022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_RESVERR, "ResvErr" }, 1032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_PATHTEAR, "PathTear" }, 1042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_RESVTEAR, "ResvTear" }, 1052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_RESVCONF, "ResvConf" }, 1062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_AGGREGATE, "Aggregate" }, 1072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_ACK, "Acknowledgement" }, 1082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_HELLO_OLD, "Hello (Old)" }, 1092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_SREFRESH, "Refresh" }, 1102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_HELLO, "Hello" }, 1112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 1122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 1132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_header_flag_values[] = { 1152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x01, "Refresh reduction capable" }, /* rfc2961 */ 1162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 1172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 1182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_SESSION 1 /* rfc2205 */ 1202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_RSVP_HOP 3 /* rfc2205, rfc3473 */ 1212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_INTEGRITY 4 /* rfc2747 */ 1222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_TIME_VALUES 5 /* rfc2205 */ 1232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ERROR_SPEC 6 1242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_SCOPE 7 1252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_STYLE 8 /* rfc2205 */ 1262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_FLOWSPEC 9 /* rfc2215 */ 1272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_FILTERSPEC 10 /* rfc2215 */ 1282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_SENDER_TEMPLATE 11 1292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_SENDER_TSPEC 12 /* rfc2215 */ 1302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ADSPEC 13 /* rfc2215 */ 1312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_POLICY_DATA 14 1322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_CONFIRM 15 /* rfc2205 */ 1332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_LABEL 16 /* rfc3209 */ 1342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_LABEL_REQ 19 /* rfc3209 */ 1352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ERO 20 /* rfc3209 */ 1362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_RRO 21 /* rfc3209 */ 1372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_HELLO 22 /* rfc3209 */ 1382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_MESSAGE_ID 23 /* rfc2961 */ 1392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_MESSAGE_ID_ACK 24 /* rfc2961 */ 1402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_MESSAGE_ID_LIST 25 /* rfc2961 */ 1412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_RECOVERY_LABEL 34 /* rfc3473 */ 1422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_UPSTREAM_LABEL 35 /* rfc3473 */ 1432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_LABEL_SET 36 /* rfc3473 */ 1442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_PROTECTION 37 /* rfc3473 */ 1452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_DETOUR 63 /* draft-ietf-mpls-rsvp-lsp-fastreroute-07 */ 1462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_CLASSTYPE 66 /* rfc4124 */ 1472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_CLASSTYPE_OLD 125 /* draft-ietf-tewg-diff-te-proto-07 */ 1482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_SUGGESTED_LABEL 129 /* rfc3473 */ 1492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ACCEPT_LABEL_SET 130 /* rfc3473 */ 1502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_RESTART_CAPABILITY 131 /* rfc3473 */ 1512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_NOTIFY_REQ 195 /* rfc3473 */ 1522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ADMIN_STATUS 196 /* rfc3473 */ 1532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_PROPERTIES 204 /* juniper proprietary */ 1542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_FASTREROUTE 205 /* draft-ietf-mpls-rsvp-lsp-fastreroute-07 */ 1552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_SESSION_ATTRIBUTE 207 /* rfc3209 */ 1562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_GENERALIZED_UNI 229 /* OIF RSVP extensions UNI 1.0 Signaling, Rel. 2 */ 1572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_CALL_ID 230 /* rfc3474 */ 1582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_CALL_OPS 236 /* rfc3474 */ 1592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_obj_values[] = { 1612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_SESSION, "Session" }, 1622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_RSVP_HOP, "RSVP Hop" }, 1632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_INTEGRITY, "Integrity" }, 1642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_TIME_VALUES, "Time Values" }, 1652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ERROR_SPEC, "Error Spec" }, 1662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_SCOPE, "Scope" }, 1672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_STYLE, "Style" }, 1682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_FLOWSPEC, "Flowspec" }, 1692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_FILTERSPEC, "FilterSpec" }, 1702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_SENDER_TEMPLATE, "Sender Template" }, 1712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_SENDER_TSPEC, "Sender TSpec" }, 1722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ADSPEC, "Adspec" }, 1732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_POLICY_DATA, "Policy Data" }, 1742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_CONFIRM, "Confirm" }, 1752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_LABEL, "Label" }, 1762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_LABEL_REQ, "Label Request" }, 1772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ERO, "ERO" }, 1782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_RRO, "RRO" }, 1792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_HELLO, "Hello" }, 1802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_MESSAGE_ID, "Message ID" }, 1812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_MESSAGE_ID_ACK, "Message ID Ack" }, 1822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_MESSAGE_ID_LIST, "Message ID List" }, 1832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_RECOVERY_LABEL, "Recovery Label" }, 1842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_UPSTREAM_LABEL, "Upstream Label" }, 1852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_LABEL_SET, "Label Set" }, 1862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ACCEPT_LABEL_SET, "Acceptable Label Set" }, 1872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_DETOUR, "Detour" }, 1882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_CLASSTYPE, "Class Type" }, 1892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_CLASSTYPE_OLD, "Class Type (old)" }, 1902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_SUGGESTED_LABEL, "Suggested Label" }, 1912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_PROPERTIES, "Properties" }, 1922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_FASTREROUTE, "Fast Re-Route" }, 1932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_SESSION_ATTRIBUTE, "Session Attribute" }, 1942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_GENERALIZED_UNI, "Generalized UNI" }, 1952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_CALL_ID, "Call-ID" }, 1962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_CALL_OPS, "Call Capability" }, 1972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_RESTART_CAPABILITY, "Restart Capability" }, 1982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_NOTIFY_REQ, "Notify Request" }, 1992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_PROTECTION, "Protection" }, 2002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ADMIN_STATUS, "Administrative Status" }, 2012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 2022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 2032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 2042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_IPV4 1 2052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_IPV6 2 2062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_TUNNEL_IPV4 7 2072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_TUNNEL_IPV6 8 2082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_UNI_IPV4 11 /* OIF RSVP extensions UNI 1.0 Signaling Rel. 2 */ 2092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_1 1 2102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_2 2 2112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_3 3 2122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_4 4 2132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 2142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 2152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * the ctypes are not globally unique so for 2162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * translating it to strings we build a table based 2172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * on objects offsetted by the ctype 2182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 2192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 2202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_ctype_values[] = { 2212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RSVP_HOP+RSVP_CTYPE_IPV4, "IPv4" }, 2222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RSVP_HOP+RSVP_CTYPE_IPV6, "IPv6" }, 2232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RSVP_HOP+RSVP_CTYPE_3, "IPv4 plus opt. TLVs" }, 2242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RSVP_HOP+RSVP_CTYPE_4, "IPv6 plus opt. TLVs" }, 2252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_NOTIFY_REQ+RSVP_CTYPE_IPV4, "IPv4" }, 2262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_NOTIFY_REQ+RSVP_CTYPE_IPV6, "IPv6" }, 2272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_CONFIRM+RSVP_CTYPE_IPV4, "IPv4" }, 2282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_CONFIRM+RSVP_CTYPE_IPV6, "IPv6" }, 2292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_TIME_VALUES+RSVP_CTYPE_1, "1" }, 2302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_FLOWSPEC+RSVP_CTYPE_1, "obsolete" }, 2312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_FLOWSPEC+RSVP_CTYPE_2, "IntServ" }, 2322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SENDER_TSPEC+RSVP_CTYPE_2, "IntServ" }, 2332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_ADSPEC+RSVP_CTYPE_2, "IntServ" }, 2342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_IPV4, "IPv4" }, 2352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_IPV6, "IPv6" }, 2362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_3, "IPv6 Flow-label" }, 2372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, 2382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_IPV4, "IPv4" }, 2392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_IPV6, "IPv6" }, 2402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, 2412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_UNI_IPV4, "UNI IPv4" }, 2422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SENDER_TEMPLATE+RSVP_CTYPE_IPV4, "IPv4" }, 2432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SENDER_TEMPLATE+RSVP_CTYPE_IPV6, "IPv6" }, 2442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SENDER_TEMPLATE+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, 2452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_MESSAGE_ID+RSVP_CTYPE_1, "1" }, 2462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_MESSAGE_ID_ACK+RSVP_CTYPE_1, "Message id ack" }, 2472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_MESSAGE_ID_ACK+RSVP_CTYPE_2, "Message id nack" }, 2482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_MESSAGE_ID_LIST+RSVP_CTYPE_1, "1" }, 2492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_STYLE+RSVP_CTYPE_1, "1" }, 2502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_HELLO+RSVP_CTYPE_1, "Hello Request" }, 2512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_HELLO+RSVP_CTYPE_2, "Hello Ack" }, 2522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_LABEL_REQ+RSVP_CTYPE_1, "without label range" }, 2532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_LABEL_REQ+RSVP_CTYPE_2, "with ATM label range" }, 2542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_LABEL_REQ+RSVP_CTYPE_3, "with FR label range" }, 2552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_LABEL_REQ+RSVP_CTYPE_4, "Generalized Label" }, 2562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_LABEL+RSVP_CTYPE_1, "Label" }, 2572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_LABEL+RSVP_CTYPE_2, "Generalized Label" }, 2582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_LABEL+RSVP_CTYPE_3, "Waveband Switching" }, 2592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SUGGESTED_LABEL+RSVP_CTYPE_1, "Label" }, 2602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SUGGESTED_LABEL+RSVP_CTYPE_2, "Generalized Label" }, 2612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SUGGESTED_LABEL+RSVP_CTYPE_3, "Waveband Switching" }, 2622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_UPSTREAM_LABEL+RSVP_CTYPE_1, "Label" }, 2632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_UPSTREAM_LABEL+RSVP_CTYPE_2, "Generalized Label" }, 2642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_UPSTREAM_LABEL+RSVP_CTYPE_3, "Waveband Switching" }, 2652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RECOVERY_LABEL+RSVP_CTYPE_1, "Label" }, 2662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RECOVERY_LABEL+RSVP_CTYPE_2, "Generalized Label" }, 2672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RECOVERY_LABEL+RSVP_CTYPE_3, "Waveband Switching" }, 2682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_ERO+RSVP_CTYPE_IPV4, "IPv4" }, 2692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RRO+RSVP_CTYPE_IPV4, "IPv4" }, 2702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_ERROR_SPEC+RSVP_CTYPE_IPV4, "IPv4" }, 2712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_ERROR_SPEC+RSVP_CTYPE_IPV6, "IPv6" }, 2722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_ERROR_SPEC+RSVP_CTYPE_3, "IPv4 plus opt. TLVs" }, 2732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_ERROR_SPEC+RSVP_CTYPE_4, "IPv6 plus opt. TLVs" }, 2742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RESTART_CAPABILITY+RSVP_CTYPE_1, "IPv4" }, 2752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SESSION_ATTRIBUTE+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, 2762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_FASTREROUTE+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, /* old style*/ 2772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_FASTREROUTE+RSVP_CTYPE_1, "1" }, /* new style */ 2782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_DETOUR+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, 2792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_PROPERTIES+RSVP_CTYPE_1, "1" }, 2802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_ADMIN_STATUS+RSVP_CTYPE_1, "1" }, 2812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_CLASSTYPE+RSVP_CTYPE_1, "1" }, 2822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_CLASSTYPE_OLD+RSVP_CTYPE_1, "1" }, 2832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_LABEL_SET+RSVP_CTYPE_1, "1" }, 2842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_GENERALIZED_UNI+RSVP_CTYPE_1, "1" }, 2852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 2862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 2872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 2882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct rsvp_obj_integrity_t { 2892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t flags; 2902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t res; 2912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t key_id[6]; 2922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t sequence[8]; 2932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t digest[16]; 2942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 2952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 2962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_obj_integrity_flag_values[] = { 2972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x80, "Handshake" }, 2982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 2992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct rsvp_obj_frr_t { 3022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t setup_prio; 3032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t hold_prio; 3042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t hop_limit; 3052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t flags; 3062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t bandwidth[4]; 3072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t include_any[4]; 3082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t exclude_any[4]; 3092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t include_all[4]; 3102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_XRO_MASK_SUBOBJ(x) ((x)&0x7f) 3142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_XRO_MASK_LOOSE(x) ((x)&0x80) 3152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_XRO_RES 0 3172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_XRO_IPV4 1 3182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_XRO_IPV6 2 3192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_XRO_ASN 32 3202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_XRO_MPLS 64 3212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_obj_xro_values[] = { 3232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_XRO_RES, "Reserved" }, 3242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_XRO_IPV4, "IPv4 prefix" }, 3252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_XRO_IPV6, "IPv6 prefix" }, 3262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_XRO_ASN, "Autonomous system number" }, 3272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_XRO_MPLS, "MPLS label switched path termination" }, 3282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 3292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* draft-ietf-mpls-rsvp-lsp-fastreroute-07.txt */ 3322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_obj_rro_flag_values[] = { 3332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x01, "Local protection available" }, 3342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x02, "Local protection in use" }, 3352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x04, "Bandwidth protection" }, 3362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x08, "Node protection" }, 3372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 3382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_resstyle_values[] = { 3412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 17, "Wildcard Filter" }, 3422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 10, "Fixed Filter" }, 3432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 18, "Shared Explicit" }, 3442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 3452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_INTSERV_GUARANTEED_SERV 2 3482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_INTSERV_CONTROLLED_LOAD 5 3492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_intserv_service_type_values[] = { 3512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 1, "Default/Global Information" }, 3522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_INTSERV_GUARANTEED_SERV, "Guaranteed Service" }, 3532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_INTSERV_CONTROLLED_LOAD, "Controlled Load" }, 3542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 3552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_intserv_parameter_id_values[] = { 3582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 4, "IS hop cnt" }, 3592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 6, "Path b/w estimate" }, 3602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 8, "Minimum path latency" }, 3612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 10, "Composed MTU" }, 3622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 127, "Token Bucket TSpec" }, 3632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 130, "Guaranteed Service RSpec" }, 3642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 133, "End-to-end composed value for C" }, 3652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 134, "End-to-end composed value for D" }, 3662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 135, "Since-last-reshaping point composed C" }, 3672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 136, "Since-last-reshaping point composed D" }, 3682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 3692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic struct tok rsvp_session_attribute_flag_values[] = { 3722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x01, "Local Protection desired" }, 3732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x02, "Label Recording desired" }, 3742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x04, "SE Style desired" }, 3752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x08, "Bandwidth protection desired" }, /* draft-ietf-mpls-rsvp-lsp-fastreroute-02.txt */ 3762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x10, "Node protection desired" }, /* draft-ietf-mpls-rsvp-lsp-fastreroute-02.txt */ 3772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 3782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic struct tok rsvp_obj_prop_tlv_values[] = { 3812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x01, "Cos" }, 3822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x02, "Metric 1" }, 3832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x04, "Metric 2" }, 3842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x08, "CCC Status" }, 3852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x10, "Path Type" }, 3862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 3872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ERROR_SPEC_CODE_ROUTING 24 3902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ERROR_SPEC_CODE_NOTIFY 25 3912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE 28 3922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE_OLD 125 3932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic struct tok rsvp_obj_error_code_values[] = { 3952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ERROR_SPEC_CODE_ROUTING, "Routing Problem" }, 3962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ERROR_SPEC_CODE_NOTIFY, "Notify Error" }, 3972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE, "Diffserv TE Error" }, 3982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE_OLD, "Diffserv TE Error (Old)" }, 3992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 4002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic struct tok rsvp_obj_error_code_routing_values[] = { 4032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 1, "Bad EXPLICIT_ROUTE object" }, 4042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 2, "Bad strict node" }, 4052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 3, "Bad loose node" }, 4062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 4, "Bad initial subobject" }, 4072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 5, "No route available toward destination" }, 4082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 6, "Unacceptable label value" }, 4092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 7, "RRO indicated routing loops" }, 4102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 8, "non-RSVP-capable router in the path" }, 4112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 9, "MPLS label allocation failure" }, 4122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 10, "Unsupported L3PID" }, 4132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 4142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic struct tok rsvp_obj_error_code_diffserv_te_values[] = { 4172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 1, "Unexpected CT object" }, 4182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 2, "Unsupported CT" }, 4192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 3, "Invalid CT value" }, 4202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 4, "CT/setup priority do not form a configured TE-Class" }, 4212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 5, "CT/holding priority do not form a configured TE-Class" }, 4222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 6, "CT/setup priority and CT/holding priority do not form a configured TE-Class" }, 4232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 7, "Inconsistency between signaled PSC and signaled CT" }, 4242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 8, "Inconsistency between signaled PHBs and signaled CT" }, 4252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 4262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* rfc3473 / rfc 3471 */ 4292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_obj_admin_status_flag_values[] = { 4302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x80000000, "Reflect" }, 4312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x00000004, "Testing" }, 4322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x00000002, "Admin-down" }, 4332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x00000001, "Delete-in-progress" }, 4342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 4352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* label set actions - rfc3471 */ 4382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LABEL_SET_INCLUSIVE_LIST 0 4392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LABEL_SET_EXCLUSIVE_LIST 1 4402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LABEL_SET_INCLUSIVE_RANGE 2 4412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LABEL_SET_EXCLUSIVE_RANGE 3 4422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_obj_label_set_action_values[] = { 4442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LABEL_SET_INCLUSIVE_LIST, "Inclusive list" }, 4452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LABEL_SET_EXCLUSIVE_LIST, "Exclusive list" }, 4462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LABEL_SET_INCLUSIVE_RANGE, "Inclusive range" }, 4472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LABEL_SET_EXCLUSIVE_RANGE, "Exclusive range" }, 4482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 4492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* OIF RSVP extensions UNI 1.0 Signaling, release 2 */ 4522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_GEN_UNI_SUBOBJ_SOURCE_TNA_ADDRESS 1 4532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_GEN_UNI_SUBOBJ_DESTINATION_TNA_ADDRESS 2 4542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_GEN_UNI_SUBOBJ_DIVERSITY 3 4552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_GEN_UNI_SUBOBJ_EGRESS_LABEL 4 4562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_GEN_UNI_SUBOBJ_SERVICE_LEVEL 5 4572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_obj_generalized_uni_values[] = { 4592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_GEN_UNI_SUBOBJ_SOURCE_TNA_ADDRESS, "Source TNA address" }, 4602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_GEN_UNI_SUBOBJ_DESTINATION_TNA_ADDRESS, "Destination TNA address" }, 4612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_GEN_UNI_SUBOBJ_DIVERSITY, "Diversity" }, 4622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_GEN_UNI_SUBOBJ_EGRESS_LABEL, "Egress label" }, 4632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_GEN_UNI_SUBOBJ_SERVICE_LEVEL, "Service level" }, 4642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 4652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic int rsvp_intserv_print(const u_char *, u_short); 4682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 4702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * this is a dissector for all the intserv defined 4712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * specs as defined per rfc2215 4722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * it is called from various rsvp objects; 4732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * returns the amount of bytes being processed 4742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 4752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic int 4762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectrsvp_intserv_print(const u_char *tptr, u_short obj_tlen) { 4772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project int parameter_id,parameter_length; 4792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project union { 4802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project float f; 4812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int32_t i; 4822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } bw; 4832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 4852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return 0; 4862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project parameter_id = *(tptr); 4872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project parameter_length = EXTRACT_16BITS(tptr+2)<<2; /* convert wordcount to bytecount */ 4882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t Parameter ID: %s (%u), length: %u, Flags: [0x%02x]", 4902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_intserv_parameter_id_values,"unknown",parameter_id), 4912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project parameter_id, 4922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project parameter_length, 4932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(tptr+1)); 4942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < parameter_length+4) 4962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return 0; 4972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(parameter_id) { /* parameter_id */ 4982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 4: 5002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 5012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | 4 (e) | (f) | 1 (g) | 5032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | IS hop cnt (32-bit unsigned integer) | 5052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 5072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (parameter_length == 4) 5082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tIS hop count: %u", EXTRACT_32BITS(tptr+4)); 5092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 5102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 6: 5122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 5132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | 6 (h) | (i) | 1 (j) | 5152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Path b/w estimate (32-bit IEEE floating point number) | 5172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 5192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (parameter_length == 4) { 5202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bw.i = EXTRACT_32BITS(tptr+4); 5212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tPath b/w estimate: %.10g Mbps", bw.f/125000); 5222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 5232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 5242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 8: 5262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 5272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | 8 (k) | (l) | 1 (m) | 5292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Minimum path latency (32-bit integer) | 5312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 5332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (parameter_length == 4) { 5342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tMinimum path latency: "); 5352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (EXTRACT_32BITS(tptr+4) == 0xffffffff) 5362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("don't care"); 5372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project else 5382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%u", EXTRACT_32BITS(tptr+4)); 5392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 5402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 5412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 10: 5432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 5452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | 10 (n) | (o) | 1 (p) | 5472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Composed MTU (32-bit unsigned integer) | 5492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 5512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (parameter_length == 4) 5522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tComposed MTU: %u bytes", EXTRACT_32BITS(tptr+4)); 5532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 5542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 127: 5552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 5562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | 127 (e) | 0 (f) | 5 (g) | 5582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Token Bucket Rate [r] (32-bit IEEE floating point number) | 5602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Token Bucket Size [b] (32-bit IEEE floating point number) | 5622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Peak Data Rate [p] (32-bit IEEE floating point number) | 5642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Minimum Policed Unit [m] (32-bit integer) | 5662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Maximum Packet Size [M] (32-bit integer) | 5682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 5702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (parameter_length == 20) { 5722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bw.i = EXTRACT_32BITS(tptr+4); 5732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tToken Bucket Rate: %.10g Mbps", bw.f/125000); 5742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bw.i = EXTRACT_32BITS(tptr+8); 5752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tToken Bucket Size: %.10g bytes", bw.f); 5762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bw.i = EXTRACT_32BITS(tptr+12); 5772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tPeak Data Rate: %.10g Mbps", bw.f/125000); 5782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tMinimum Policed Unit: %u bytes", EXTRACT_32BITS(tptr+16)); 5792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tMaximum Packet Size: %u bytes", EXTRACT_32BITS(tptr+20)); 5802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 5812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 5822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 130: 5842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 5852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | 130 (h) | 0 (i) | 2 (j) | 5872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Rate [R] (32-bit IEEE floating point number) | 5892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Slack Term [S] (32-bit integer) | 5912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 5932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (parameter_length == 8) { 5952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bw.i = EXTRACT_32BITS(tptr+4); 5962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tRate: %.10g Mbps", bw.f/125000); 5972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tSlack Term: %u", EXTRACT_32BITS(tptr+8)); 5982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 5992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 6002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 133: 6022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 134: 6032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 135: 6042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 136: 6052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (parameter_length == 4) 6062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tValue: %u", EXTRACT_32BITS(tptr+4)); 6072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 6082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 6102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (vflag <= 1) 6112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project print_unknown_data(tptr+4,"\n\t\t",parameter_length); 6122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 6132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return (parameter_length+4); /* header length 4 bytes */ 6142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project} 6152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic int 6172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectrsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) { 6182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct rsvp_object_header *rsvp_obj_header; 6202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const u_char *obj_tptr; 6212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project union { 6222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct rsvp_obj_integrity_t *rsvp_obj_integrity; 6232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct rsvp_obj_frr_t *rsvp_obj_frr; 6242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } obj_ptr; 6252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_short rsvp_obj_len,rsvp_obj_ctype,obj_tlen,intserv_serv_tlen; 6272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project int hexdump,processed,padbytes,error_code,error_value,i; 6282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project union { 6292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project float f; 6302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int32_t i; 6312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } bw; 6322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t namelen; 6332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int action, subchannel; 6352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(tlen>=sizeof(struct rsvp_object_header)) { 6372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* did we capture enough for fully decoding the object header ? */ 6382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (!TTEST2(*tptr, sizeof(struct rsvp_object_header))) 6392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project goto trunc; 6402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_obj_header = (const struct rsvp_object_header *)tptr; 6422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_obj_len=EXTRACT_16BITS(rsvp_obj_header->length); 6432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_obj_ctype=rsvp_obj_header->ctype; 6442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if(rsvp_obj_len % 4) { 6462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%sERROR: object header size %u not a multiple of 4", ident, rsvp_obj_len); 6472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 6482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 6492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if(rsvp_obj_len < sizeof(struct rsvp_object_header)) { 6502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%sERROR: object header too short %u < %lu", ident, rsvp_obj_len, 6512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (unsigned long)sizeof(const struct rsvp_object_header)); 6522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 6532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 6542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s%s Object (%u) Flags: [%s", 6562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 6572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_values, 6582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown", 6592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_obj_header->class_num), 6602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_obj_header->class_num, 6612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ((rsvp_obj_header->class_num)&0x80) ? "ignore" : "reject"); 6622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (rsvp_obj_header->class_num > 128) 6642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf(" %s", 6652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ((rsvp_obj_header->class_num)&0x40) ? "and forward" : "silently"); 6662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf(" if unknown], Class-Type: %s (%u), length: %u", 6682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_ctype_values, 6692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown", 6702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ((rsvp_obj_header->class_num)<<8)+rsvp_obj_ctype), 6712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_obj_ctype, 6722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_obj_len); 6732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if(tlen < rsvp_obj_len) { 6752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%sERROR: object goes past end of objects TLV", ident); 6762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 6772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 6782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr=tptr+sizeof(struct rsvp_object_header); 6802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen=rsvp_obj_len-sizeof(struct rsvp_object_header); 6812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* did we capture enough for fully decoding the object ? */ 6832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (!TTEST2(*tptr, rsvp_obj_len)) 6842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 6852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=FALSE; 6862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_header->class_num) { 6882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_SESSION: 6892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 6902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV4: 6912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 6922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 6932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv4 DestAddress: %s, Protocol ID: 0x%02x", 6942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 6952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 6962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+sizeof(struct in_addr))); 6972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Flags: [0x%02x], DestPort %u", 6982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 6992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+5), 7002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+6)); 7012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 7022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 7032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 7052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV6: 7062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 20) 7072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 7082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv6 DestAddress: %s, Protocol ID: 0x%02x", 7092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 7102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr), 7112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+sizeof(struct in6_addr))); 7122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Flags: [0x%02x], DestPort %u", 7132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 7142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+sizeof(struct in6_addr)+1), 7152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+sizeof(struct in6_addr)+2)); 7162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=20; 7172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=20; 7182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_TUNNEL_IPV6: 7212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 36) 7222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 7232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv6 Tunnel EndPoint: %s, Tunnel ID: 0x%04x, Extended Tunnel ID: %s", 7242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 7252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr), 7262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+18), 7272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr+20)); 7282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=36; 7292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=36; 7302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 7322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_TUNNEL_IPV4: 7332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_UNI_IPV4: 7342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 12) 7352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 7362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv4 Tunnel EndPoint: %s, Tunnel ID: 0x%04x, Extended Tunnel ID: %s", 7372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 7382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 7392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+6), 7402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr+8)); 7412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=12; 7422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=12; 7432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 7452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 7462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 7472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_CONFIRM: 7502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 7512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV4: 7522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < sizeof(struct in_addr)) 7532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 7542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv4 Receiver Address: %s", 7552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 7562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr)); 7572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=sizeof(struct in_addr); 7582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=sizeof(struct in_addr); 7592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 7612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV6: 7622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < sizeof(struct in6_addr)) 7632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 7642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv6 Receiver Address: %s", 7652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 7662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr)); 7672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=sizeof(struct in6_addr); 7682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=sizeof(struct in6_addr); 7692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 7712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 7722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 7732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 7742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_NOTIFY_REQ: 7772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 7782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV4: 7792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < sizeof(struct in_addr)) 7802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 7812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv4 Notify Node Address: %s", 7822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 7832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr)); 7842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=sizeof(struct in_addr); 7852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=sizeof(struct in_addr); 7862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 7882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV6: 7892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < sizeof(struct in6_addr)) 7902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 7912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv6 Notify Node Address: %s", 7922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 7932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr)); 7942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=sizeof(struct in6_addr); 7952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=sizeof(struct in6_addr); 7962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 7982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 7992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 8002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 8012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_SUGGESTED_LABEL: /* fall through */ 8042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_UPSTREAM_LABEL: /* fall through */ 8052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_RECOVERY_LABEL: /* fall through */ 8062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_LABEL: 8072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 8082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 8092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(obj_tlen >= 4 ) { 8102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Label: %u", ident, EXTRACT_32BITS(obj_tptr)); 8112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 8122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 8132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 8142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_2: 8162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 8172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 8182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Generalized Label: %u", 8192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 8202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr)); 8212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 8222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 8232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_3: 8252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 12) 8262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 8272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Waveband ID: %u%s Start Label: %u, Stop Label: %u", 8282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 8292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr), 8302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 8312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+4), 8322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+8)); 8332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=12; 8342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=12; 8352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 8372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 8382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 8392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_STYLE: 8422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 8432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 8442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 8452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 8462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Reservation Style: %s, Flags: [0x%02x]", 8472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 8482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_resstyle_values, 8492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown", 8502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_24BITS(obj_tptr+1)), 8512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr)); 8522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 8532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 8542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 8562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 8572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 8582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_SENDER_TEMPLATE: 8612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 8622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV4: 8632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 8642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 8652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Source Address: %s, Source Port: %u", 8662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 8672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 8682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+6)); 8692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 8702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 8712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 8732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV6: 8742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 20) 8752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 8762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Source Address: %s, Source Port: %u", 8772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 8782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr), 8792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+18)); 8802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=20; 8812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=20; 8822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 8842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_TUNNEL_IPV4: 8852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 8862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 8872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv4 Tunnel Sender Address: %s, LSP-ID: 0x%04x", 8882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 8892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 8902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+6)); 8912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 8922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 8932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 8952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 8962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 8972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_LABEL_REQ: 9002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 9012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 9022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(obj_tlen >= 4 ) { 9032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s L3 Protocol ID: %s", 9042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 9052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(ethertype_values, 9062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown Protocol (0x%04x)", 9072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+2))); 9082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 9092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 9102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 9112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 9122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_2: 9132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 12) 9142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 9152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s L3 Protocol ID: %s", 9162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 9172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(ethertype_values, 9182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown Protocol (0x%04x)", 9192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+2))); 9202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf(",%s merge capability",((*(obj_tptr+4))&0x80) ? "no" : "" ); 9212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Minimum VPI/VCI: %u/%u", 9222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 9232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (EXTRACT_16BITS(obj_tptr+4))&0xfff, 9242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (EXTRACT_16BITS(obj_tptr+6))&0xfff); 9252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Maximum VPI/VCI: %u/%u", 9262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 9272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (EXTRACT_16BITS(obj_tptr+8))&0xfff, 9282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (EXTRACT_16BITS(obj_tptr+10))&0xfff); 9292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=12; 9302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=12; 9312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 9322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_3: 9332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 12) 9342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 9352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s L3 Protocol ID: %s", 9362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 9372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(ethertype_values, 9382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown Protocol (0x%04x)", 9392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+2))); 9402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Minimum/Maximum DLCI: %u/%u, %s%s bit DLCI", 9412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 9422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (EXTRACT_32BITS(obj_tptr+4))&0x7fffff, 9432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (EXTRACT_32BITS(obj_tptr+8))&0x7fffff, 9442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (((EXTRACT_16BITS(obj_tptr+4)>>7)&3) == 0 ) ? "10" : "", 9452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (((EXTRACT_16BITS(obj_tptr+4)>>7)&3) == 2 ) ? "23" : ""); 9462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=12; 9472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=12; 9482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 9492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_4: 9502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 9512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 9522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s LSP Encoding Type: %s (%u)", 9532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 9542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(gmpls_encoding_values, 9552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown", 9562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *obj_tptr), 9572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *obj_tptr); 9582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Switching Type: %s (%u), Payload ID: %s (0x%04x)", 9592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 9602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(gmpls_switch_cap_values, 9612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown", 9622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+1)), 9632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+1), 9642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(gmpls_payload_values, 9652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown", 9662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+2)), 9672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+2)); 9682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 9692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 9702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 9712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 9722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 9732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 9742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 9752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 9762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_RRO: 9772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ERO: 9782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 9792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV4: 9802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(obj_tlen >= 4 ) { 9812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Subobject Type: %s, length %u", 9822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 9832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_xro_values, 9842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown %u", 9852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project RSVP_OBJ_XRO_MASK_SUBOBJ(*obj_tptr)), 9862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+1)); 9872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 9882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (*(obj_tptr+1) == 0) { /* prevent infinite loops */ 9892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s ERROR: zero length ERO subtype",ident); 9902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 9912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 9922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 9932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(RSVP_OBJ_XRO_MASK_SUBOBJ(*obj_tptr)) { 9942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_XRO_IPV4: 9952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf(", %s, %s/%u, Flags: [%s]", 9962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project RSVP_OBJ_XRO_MASK_LOOSE(*obj_tptr) ? "Loose" : "Strict", 9972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr+2), 9982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+6), 9992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bittok2str(rsvp_obj_rro_flag_values, 10002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "none", 10012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+7))); /* rfc3209 says that this field is rsvd. */ 10022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 10032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=*(obj_tptr+1); 10042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=*(obj_tptr+1); 10052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 10062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 10072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 10082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 10092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 10102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 10112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 10122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_HELLO: 10132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 10142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 10152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_2: 10162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 10172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 10182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Source Instance: 0x%08x, Destination Instance: 0x%08x", 10192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 10202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr), 10212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+4)); 10222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 10232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 10242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 10252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 10262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 10272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 10282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 10292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 10302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_RESTART_CAPABILITY: 10312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 10322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 10332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 10342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 10352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Restart Time: %ums, Recovery Time: %ums", 10362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 10372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr), 10382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+4)); 10392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 10402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 10412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 10422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 10432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 10442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 10452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 10462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 10472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_SESSION_ATTRIBUTE: 10482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 10492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_TUNNEL_IPV4: 10502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 10512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 10522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project namelen = *(obj_tptr+3); 10532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4+namelen) 10542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 10552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Session Name: ", ident); 10562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project for (i = 0; i < namelen; i++) 10572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project safeputchar(*(obj_tptr+4+i)); 10582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Setup Priority: %u, Holding Priority: %u, Flags: [%s]", 10592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 10602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (int)*obj_tptr, 10612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (int)*(obj_tptr+1), 10622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_session_attribute_flag_values, 10632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "none", 10642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+2))); 10652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 10662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4+*(obj_tptr+3); 10672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4+*(obj_tptr+3); 10682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 10692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 10702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 10712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 10722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 10732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 10742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_GENERALIZED_UNI: 10752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 10762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project int subobj_type,af,subobj_len,total_subobj_len; 10772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 10782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 10792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 10802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 10812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 10822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 10832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* read variable length subobjects */ 10842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project total_subobj_len = obj_tlen; 10852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(total_subobj_len > 0) { 10862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subobj_len = EXTRACT_16BITS(obj_tptr); 10872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subobj_type = (EXTRACT_16BITS(obj_tptr+2))>>8; 10882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project af = (EXTRACT_16BITS(obj_tptr+2))&0x00FF; 10892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 10902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Subobject Type: %s (%u), AF: %s (%u), length: %u", 10912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 10922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_generalized_uni_values, "Unknown", subobj_type), 10932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subobj_type, 10942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(af_values, "Unknown", af), af, 10952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subobj_len); 10962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 10972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(subobj_type) { 10982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_GEN_UNI_SUBOBJ_SOURCE_TNA_ADDRESS: 10992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_GEN_UNI_SUBOBJ_DESTINATION_TNA_ADDRESS: 11002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(af) { 11022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case AFNUM_INET: 11032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (subobj_len < 8) 11042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 11052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s UNI IPv4 TNA address: %s", 11062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, ipaddr_string(obj_tptr+4)); 11072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 11092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case AFNUM_INET6: 11102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (subobj_len < 20) 11112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 11122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s UNI IPv6 TNA address: %s", 11132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, ip6addr_string(obj_tptr+4)); 11142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 11162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case AFNUM_NSAP: 11172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (subobj_len) { 11182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* unless we have a TLV parser lets just hexdump */ 11192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 11202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 11212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 11232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_GEN_UNI_SUBOBJ_DIVERSITY: 11262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (subobj_len) { 11272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* unless we have a TLV parser lets just hexdump */ 11282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 11292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 11302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_GEN_UNI_SUBOBJ_EGRESS_LABEL: 11332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (subobj_len < 16) { 11342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 11352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 11362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s U-bit: %x, Label type: %u, Logical port id: %u, Label: %u", 11382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 11392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ((EXTRACT_32BITS(obj_tptr+4))>>31), 11402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ((EXTRACT_32BITS(obj_tptr+4))&0xFF), 11412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+8), 11422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+12)); 11432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_GEN_UNI_SUBOBJ_SERVICE_LEVEL: 11462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (subobj_len < 8) { 11472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 11482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 11492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Service level: %u", 11512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, (EXTRACT_32BITS(obj_tptr+4))>>24); 11522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 11552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 11562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 11582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project total_subobj_len-=subobj_len; 11592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=subobj_len; 11602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen+=subobj_len; 11612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 11622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (total_subobj_len) { 11642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* unless we have a TLV parser lets just hexdump */ 11652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 11662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 11672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 11702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 11712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 11722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_RSVP_HOP: 11752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 11762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_3: /* fall through - FIXME add TLV parser */ 11772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV4: 11782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 11792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 11802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Previous/Next Interface: %s, Logical Interface Handle: 0x%08x", 11812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 11822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 11832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+4)); 11842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 11852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 11862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen) 11872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; /* unless we have a TLV parser lets just hexdump */ 11882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 11902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_4: /* fall through - FIXME add TLV parser */ 11912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV6: 11922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 20) 11932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 11942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Previous/Next Interface: %s, Logical Interface Handle: 0x%08x", 11952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 11962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr), 11972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+16)); 11982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=20; 11992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=20; 12002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; /* unless we have a TLV parser lets just hexdump */ 12012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 12032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 12042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 12052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 12062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 12082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_TIME_VALUES: 12092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 12102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 12112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 12122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 12132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Refresh Period: %ums", 12142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 12152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr)); 12162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 12172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 12182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 12202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 12212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 12222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 12242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* those three objects do share the same semantics */ 12252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_SENDER_TSPEC: 12262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ADSPEC: 12272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_FLOWSPEC: 12282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 12292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_2: 12302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 12312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 12322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Msg-Version: %u, length: %u", 12332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 12342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (*obj_tptr & 0xf0) >> 4, 12352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+2)<<2); 12362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; /* get to the start of the service header */ 12372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 12382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 12392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while (obj_tlen >= 4) { 12402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project intserv_serv_tlen=EXTRACT_16BITS(obj_tptr+2)<<2; 12412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Service Type: %s (%u), break bit %s set, Service length: %u", 12422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 12432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_intserv_service_type_values,"unknown",*(obj_tptr)), 12442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr), 12452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (*(obj_tptr+1)&0x80) ? "" : "not", 12462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project intserv_serv_tlen); 12472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 12482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; /* get to the start of the parameter list */ 12492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 12502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 12512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while (intserv_serv_tlen>=4) { 12522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project processed = rsvp_intserv_print(obj_tptr, obj_tlen); 12532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (processed == 0) 12542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=processed; 12562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project intserv_serv_tlen-=processed; 12572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=processed; 12582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 12592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 12602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 12622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 12632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 12642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 12662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_FILTERSPEC: 12672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 12682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV4: 12692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 12702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 12712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Source Address: %s, Source Port: %u", 12722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 12732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 12742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+6)); 12752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 12762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 12772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 12792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV6: 12802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 20) 12812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 12822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Source Address: %s, Source Port: %u", 12832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 12842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr), 12852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+18)); 12862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=20; 12872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=20; 12882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_3: 12902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 20) 12912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 12922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Source Address: %s, Flow Label: %u", 12932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 12942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr), 12952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_24BITS(obj_tptr+17)); 12962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=20; 12972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=20; 12982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_TUNNEL_IPV6: 13002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 20) 13012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 13022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Source Address: %s, LSP-ID: 0x%04x", 13032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 13042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 13052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+18)); 13062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=20; 13072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=20; 13082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 13102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_TUNNEL_IPV4: 13112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 13122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 13132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Source Address: %s, LSP-ID: 0x%04x", 13142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 13152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 13162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+6)); 13172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 13182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 13192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 13212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 13222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 13232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 13252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_FASTREROUTE: 13262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* the differences between c-type 1 and 7 are minor */ 13272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_ptr.rsvp_obj_frr = (const struct rsvp_obj_frr_t *)obj_tptr; 13282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bw.i = EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->bandwidth); 13292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 13302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 13312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: /* new style */ 13322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < sizeof(struct rsvp_obj_frr_t)) 13332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 13342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Setup Priority: %u, Holding Priority: %u, Hop-limit: %u, Bandwidth: %.10g Mbps", 13352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 13362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (int)obj_ptr.rsvp_obj_frr->setup_prio, 13372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (int)obj_ptr.rsvp_obj_frr->hold_prio, 13382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (int)obj_ptr.rsvp_obj_frr->hop_limit, 13392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bw.f*8/1000000); 13402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Include-any: 0x%08x, Exclude-any: 0x%08x, Include-all: 0x%08x", 13412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 13422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->include_any), 13432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->exclude_any), 13442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->include_all)); 13452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=sizeof(struct rsvp_obj_frr_t); 13462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=sizeof(struct rsvp_obj_frr_t); 13472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 13492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_TUNNEL_IPV4: /* old style */ 13502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 16) 13512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 13522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Setup Priority: %u, Holding Priority: %u, Hop-limit: %u, Bandwidth: %.10g Mbps", 13532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 13542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (int)obj_ptr.rsvp_obj_frr->setup_prio, 13552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (int)obj_ptr.rsvp_obj_frr->hold_prio, 13562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (int)obj_ptr.rsvp_obj_frr->hop_limit, 13572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bw.f*8/1000000); 13582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Include Colors: 0x%08x, Exclude Colors: 0x%08x", 13592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 13602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->include_any), 13612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->exclude_any)); 13622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=16; 13632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=16; 13642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 13662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 13672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 13682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 13692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 13712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_DETOUR: 13722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 13732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_TUNNEL_IPV4: 13742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(obj_tlen >= 8) { 13752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s PLR-ID: %s, Avoid-Node-ID: %s", 13762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 13772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 13782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr+4)); 13792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 13802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 13812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 13822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 13842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 13852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 13862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 13882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_CLASSTYPE: 13892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_CLASSTYPE_OLD: /* fall through */ 13902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 13912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 13922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s CT: %u", 13932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 13942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr)&0x7); 13952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 13962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 13972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 13992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 14002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 14012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 14022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 14032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ERROR_SPEC: 14042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 14052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_3: /* fall through - FIXME add TLV parser */ 14062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV4: 14072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 14082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 14092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_code=*(obj_tptr+5); 14102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_value=EXTRACT_16BITS(obj_tptr+6); 14112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Error Node Address: %s, Flags: [0x%02x]%s Error Code: %s (%u)", 14122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 14132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 14142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+4), 14152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 14162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_error_code_values,"unknown",error_code), 14172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_code); 14182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch (error_code) { 14192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ERROR_SPEC_CODE_ROUTING: 14202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf(", Error Value: %s (%u)", 14212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_error_code_routing_values,"unknown",error_value), 14222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_value); 14232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 14242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE: /* fall through */ 14252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE_OLD: 14262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf(", Error Value: %s (%u)", 14272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_error_code_diffserv_te_values,"unknown",error_value), 14282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_value); 14292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 14302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 14312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf(", Unknown Error Value (%u)", error_value); 14322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 14332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 14342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 14352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 14362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 14372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 14382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_4: /* fall through - FIXME add TLV parser */ 14392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV6: 14402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 20) 14412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 14422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_code=*(obj_tptr+17); 14432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_value=EXTRACT_16BITS(obj_tptr+18); 14442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Error Node Address: %s, Flags: [0x%02x]%s Error Code: %s (%u)", 14452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 14462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr), 14472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+16), 14482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 14492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_error_code_values,"unknown",error_code), 14502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_code); 14512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 14522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch (error_code) { 14532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ERROR_SPEC_CODE_ROUTING: 14542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf(", Error Value: %s (%u)", 14552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_error_code_routing_values,"unknown",error_value), 14562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_value); 14572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 14582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 14592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 14602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 14612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=20; 14622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=20; 14632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 14642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 14652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 14662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 14672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 14682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 14692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 14702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_PROPERTIES: 14712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 14722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 14732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 14742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 14752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project padbytes = EXTRACT_16BITS(obj_tptr+2); 14762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s TLV count: %u, padding bytes: %u", 14772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 14782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr), 14792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project padbytes); 14802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 14812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 14822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* loop through as long there is anything longer than the TLV header (2) */ 14832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(obj_tlen >= 2 + padbytes) { 14842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s %s TLV (0x%02x), length: %u", /* length includes header */ 14852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 14862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_prop_tlv_values,"unknown",*obj_tptr), 14872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *obj_tptr, 14882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+1)); 14892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < *(obj_tptr+1)) 14902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 14912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (*(obj_tptr+1) < 2) 14922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 14932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project print_unknown_data(obj_tptr+2,"\n\t\t",*(obj_tptr+1)-2); 14942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=*(obj_tptr+1); 14952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=*(obj_tptr+1); 14962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 14972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 14982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 14992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 15002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 15012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 15032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_MESSAGE_ID: /* fall through */ 15042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_MESSAGE_ID_ACK: /* fall through */ 15052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_MESSAGE_ID_LIST: 15062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 15072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 15082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_2: 15092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 15102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 15112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Flags [0x%02x], epoch: %u", 15122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 15132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *obj_tptr, 15142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_24BITS(obj_tptr+1)); 15152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 15162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 15172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* loop through as long there are no messages left */ 15182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(obj_tlen >= 4) { 15192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Message-ID 0x%08x (%u)", 15202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 15212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr), 15222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr)); 15232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 15242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 15252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 15262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 15282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 15292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 15302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 15322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_INTEGRITY: 15332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 15342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 15352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < sizeof(struct rsvp_obj_integrity_t)) 15362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 15372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_ptr.rsvp_obj_integrity = (const struct rsvp_obj_integrity_t *)obj_tptr; 15382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Key-ID 0x%04x%08x, Sequence 0x%08x%08x, Flags [%s]", 15392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 15402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_ptr.rsvp_obj_integrity->key_id), 15412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->key_id+2), 15422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->sequence), 15432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->sequence+4), 15442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bittok2str(rsvp_obj_integrity_flag_values, 15452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "none", 15462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_ptr.rsvp_obj_integrity->flags)); 15472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s MD5-sum 0x%08x%08x%08x%08x (unverified)", 15482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 15492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->digest), 15502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->digest+4), 15512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->digest+8), 15522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->digest+12)); 15532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen+=sizeof(struct rsvp_obj_integrity_t); 15542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=sizeof(struct rsvp_obj_integrity_t); 15552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 15572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 15582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 15592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 15612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ADMIN_STATUS: 15622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 15632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 15642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 15652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 15662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Flags [%s]", ident, 15672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bittok2str(rsvp_obj_admin_status_flag_values, "none", 15682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr))); 15692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 15702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 15712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 15732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 15742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 15752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 15772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_LABEL_SET: 15782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 15792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 15802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 15812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 15822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project action = (EXTRACT_16BITS(obj_tptr)>>8); 15832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 15842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Action: %s (%u), Label type: %u", ident, 15852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_label_set_action_values, "Unknown", action), 15862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project action, ((EXTRACT_32BITS(obj_tptr) & 0x7F))); 15872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 15882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch (action) { 15892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LABEL_SET_INCLUSIVE_RANGE: 15902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LABEL_SET_EXCLUSIVE_RANGE: /* fall through */ 15912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 15922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* only a couple of subchannels are expected */ 15932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 12) 15942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 15952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Start range: %u, End range: %u", ident, 15962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+4), 15972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+8)); 15982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=12; 15992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=12; 16002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 16012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 16032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 16042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 16052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subchannel = 1; 16062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(obj_tlen >= 4 ) { 16072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Subchannel #%u: %u", ident, subchannel, 16082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr)); 16092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 16102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 16112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subchannel++; 16122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 16132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 16142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 16152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 16162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 16182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 16192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 16202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 16222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * FIXME those are the defined objects that lack a decoder 16232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * you are welcome to contribute code ;-) 16242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 16252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_SCOPE: 16272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_POLICY_DATA: 16282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ACCEPT_LABEL_SET: 16292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_PROTECTION: 16302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 16312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (vflag <= 1) 16322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project print_unknown_data(obj_tptr,"\n\t ",obj_tlen); /* FIXME indentation */ 16332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 16342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 16352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* do we also want to see a hex dump ? */ 16362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (vflag > 1 || hexdump==TRUE) 16372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project print_unknown_data(tptr+sizeof(sizeof(struct rsvp_object_header)),"\n\t ", /* FIXME indentation */ 16382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_obj_len-sizeof(struct rsvp_object_header)); 16392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tptr+=rsvp_obj_len; 16412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlen-=rsvp_obj_len; 16422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 16432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return 0; 16442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc: 16452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\t packet exceeded snapshot"); 16462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 16472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project} 16482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectvoid 16512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectrsvp_print(register const u_char *pptr, register u_int len) { 16522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct rsvp_common_header *rsvp_com_header; 16542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const u_char *tptr,*subtptr; 16552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_short tlen,subtlen; 16562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tptr=pptr; 16582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_com_header = (const struct rsvp_common_header *)pptr; 16602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project TCHECK(*rsvp_com_header); 16612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 16632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Sanity checking of the header. 16642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 16652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags) != RSVP_VERSION) { 16662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("ERROR: RSVP version %u packet not supported", 16672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags)); 16682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 16692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 16702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* in non-verbose mode just lets print the basic Message Type*/ 16722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (vflag < 1) { 16732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("RSVPv%u %s Message, length: %u", 16742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags), 16752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_msg_type_values, "unknown (%u)",rsvp_com_header->msg_type), 16762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project len); 16772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 16782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 16792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* ok they seem to want to know everything - lets fully decode it */ 16812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlen=EXTRACT_16BITS(rsvp_com_header->length); 16832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\tRSVPv%u %s Message (%u), Flags: [%s], length: %u, ttl: %u, checksum: 0x%04x", 16852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags), 16862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_msg_type_values, "unknown, type: %u",rsvp_com_header->msg_type), 16872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_com_header->msg_type, 16882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bittok2str(rsvp_header_flag_values,"none",RSVP_EXTRACT_FLAGS(rsvp_com_header->version_flags)), 16892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlen, 16902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_com_header->ttl, 16912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(rsvp_com_header->checksum)); 16922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (tlen < sizeof(const struct rsvp_common_header)) { 16942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("ERROR: common header too short %u < %lu", tlen, 16952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (unsigned long)sizeof(const struct rsvp_common_header)); 16962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 16972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 16982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tptr+=sizeof(const struct rsvp_common_header); 17002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlen-=sizeof(const struct rsvp_common_header); 17012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_com_header->msg_type) { 17032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_AGGREGATE: 17052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(tlen > 0) { 17062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtptr=tptr; 17072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_com_header = (const struct rsvp_common_header *)subtptr; 17082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project TCHECK(*rsvp_com_header); 17092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 17112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Sanity checking of the header. 17122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 17132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags) != RSVP_VERSION) { 17142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("ERROR: RSVP version %u packet not supported", 17152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags)); 17162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 17172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 17182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlen=EXTRACT_16BITS(rsvp_com_header->length); 17192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t RSVPv%u %s Message (%u), Flags: [%s], length: %u, ttl: %u, checksum: 0x%04x", 17212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags), 17222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_msg_type_values, "unknown, type: %u",rsvp_com_header->msg_type), 17232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_com_header->msg_type, 17242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bittok2str(rsvp_header_flag_values,"none",RSVP_EXTRACT_FLAGS(rsvp_com_header->version_flags)), 17252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlen, 17262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_com_header->ttl, 17272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(rsvp_com_header->checksum)); 17282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (subtlen < sizeof(const struct rsvp_common_header)) { 17302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("ERROR: common header too short %u < %lu", subtlen, 17312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (unsigned long)sizeof(const struct rsvp_common_header)); 17322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 17332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 17342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (tlen < subtlen) { 17362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("ERROR: common header too large %u > %u", subtlen, 17372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlen); 17382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 17392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 17402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtptr+=sizeof(const struct rsvp_common_header); 17422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlen-=sizeof(const struct rsvp_common_header); 17432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (rsvp_obj_print(subtptr,"\n\t ", subtlen) == -1) 17452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 17462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tptr+=subtlen+sizeof(const struct rsvp_common_header); 17482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlen-=subtlen+sizeof(const struct rsvp_common_header); 17492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 17502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 17522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_PATH: 17542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_RESV: 17552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_PATHERR: 17562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_RESVERR: 17572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_PATHTEAR: 17582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_RESVTEAR: 17592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_RESVCONF: 17602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_HELLO_OLD: 17612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_HELLO: 17622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_ACK: 17632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_SREFRESH: 17642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (rsvp_obj_print(tptr,"\n\t ", tlen) == -1) 17652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 17662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 17672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 17692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project print_unknown_data(tptr,"\n\t ",tlen); 17702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 17712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 17722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 17742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc: 17752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\t packet exceeded snapshot"); 17762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project} 1777