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_ = 2053f17a9db278d33517d9888dd77848f554522a38JP Abgrall "@(#) $Header: /tcpdump/master/tcpdump/print-rsvp.c,v 1.50 2008-08-16 11:36:20 hannes 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" 3953f17a9db278d33517d9888dd77848f554522a38JP Abgrall#include "signature.h" 402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * RFC 2205 common header 432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-------------+-------------+-------------+-------------+ 462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Vers | Flags| Msg Type | RSVP Checksum | 472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-------------+-------------+-------------+-------------+ 482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Send_TTL | (Reserved) | RSVP Length | 492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-------------+-------------+-------------+-------------+ 502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct rsvp_common_header { 542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t version_flags; 552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t msg_type; 562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t checksum[2]; 572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t ttl; 582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t reserved; 592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t length[2]; 602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * RFC2205 object header 642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-------------+-------------+-------------+-------------+ 682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Length (bytes) | Class-Num | C-Type | 692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-------------+-------------+-------------+-------------+ 702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * // (Object contents) // 722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-------------+-------------+-------------+-------------+ 742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct rsvp_object_header { 772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t length[2]; 782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t class_num; 792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t ctype; 802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_VERSION 1 832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_EXTRACT_VERSION(x) (((x)&0xf0)>>4) 842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_EXTRACT_FLAGS(x) ((x)&0x0f) 852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_PATH 1 872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_RESV 2 882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_PATHERR 3 892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_RESVERR 4 902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_PATHTEAR 5 912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_RESVTEAR 6 922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_RESVCONF 7 932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_AGGREGATE 12 942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_ACK 13 952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_HELLO_OLD 14 /* ancient Hellos */ 962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_SREFRESH 15 972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_MSGTYPE_HELLO 20 982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_msg_type_values[] = { 1002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_PATH, "Path" }, 1012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_RESV, "Resv" }, 1022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_PATHERR, "PathErr" }, 1032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_RESVERR, "ResvErr" }, 1042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_PATHTEAR, "PathTear" }, 1052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_RESVTEAR, "ResvTear" }, 1062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_RESVCONF, "ResvConf" }, 1072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_AGGREGATE, "Aggregate" }, 1082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_ACK, "Acknowledgement" }, 1092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_HELLO_OLD, "Hello (Old)" }, 1102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_SREFRESH, "Refresh" }, 1112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_MSGTYPE_HELLO, "Hello" }, 1122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 1132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 1142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_header_flag_values[] = { 1162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x01, "Refresh reduction capable" }, /* rfc2961 */ 1172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 1182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 1192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_SESSION 1 /* rfc2205 */ 1212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_RSVP_HOP 3 /* rfc2205, rfc3473 */ 1222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_INTEGRITY 4 /* rfc2747 */ 1232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_TIME_VALUES 5 /* rfc2205 */ 1242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ERROR_SPEC 6 1252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_SCOPE 7 1262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_STYLE 8 /* rfc2205 */ 1272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_FLOWSPEC 9 /* rfc2215 */ 1282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_FILTERSPEC 10 /* rfc2215 */ 1292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_SENDER_TEMPLATE 11 1302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_SENDER_TSPEC 12 /* rfc2215 */ 1312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ADSPEC 13 /* rfc2215 */ 1322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_POLICY_DATA 14 1332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_CONFIRM 15 /* rfc2205 */ 1342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_LABEL 16 /* rfc3209 */ 1352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_LABEL_REQ 19 /* rfc3209 */ 1362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ERO 20 /* rfc3209 */ 1372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_RRO 21 /* rfc3209 */ 1382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_HELLO 22 /* rfc3209 */ 1392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_MESSAGE_ID 23 /* rfc2961 */ 1402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_MESSAGE_ID_ACK 24 /* rfc2961 */ 1412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_MESSAGE_ID_LIST 25 /* rfc2961 */ 1422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_RECOVERY_LABEL 34 /* rfc3473 */ 1432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_UPSTREAM_LABEL 35 /* rfc3473 */ 1442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_LABEL_SET 36 /* rfc3473 */ 1452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_PROTECTION 37 /* rfc3473 */ 14653f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define RSVP_OBJ_S2L 50 /* rfc4875 */ 1472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_DETOUR 63 /* draft-ietf-mpls-rsvp-lsp-fastreroute-07 */ 1482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_CLASSTYPE 66 /* rfc4124 */ 1492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_CLASSTYPE_OLD 125 /* draft-ietf-tewg-diff-te-proto-07 */ 1502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_SUGGESTED_LABEL 129 /* rfc3473 */ 1512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ACCEPT_LABEL_SET 130 /* rfc3473 */ 1522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_RESTART_CAPABILITY 131 /* rfc3473 */ 1532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_NOTIFY_REQ 195 /* rfc3473 */ 1542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ADMIN_STATUS 196 /* rfc3473 */ 1552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_PROPERTIES 204 /* juniper proprietary */ 1562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_FASTREROUTE 205 /* draft-ietf-mpls-rsvp-lsp-fastreroute-07 */ 1572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_SESSION_ATTRIBUTE 207 /* rfc3209 */ 1582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_GENERALIZED_UNI 229 /* OIF RSVP extensions UNI 1.0 Signaling, Rel. 2 */ 1592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_CALL_ID 230 /* rfc3474 */ 1602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_CALL_OPS 236 /* rfc3474 */ 1612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_obj_values[] = { 1632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_SESSION, "Session" }, 1642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_RSVP_HOP, "RSVP Hop" }, 1652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_INTEGRITY, "Integrity" }, 1662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_TIME_VALUES, "Time Values" }, 1672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ERROR_SPEC, "Error Spec" }, 1682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_SCOPE, "Scope" }, 1692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_STYLE, "Style" }, 1702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_FLOWSPEC, "Flowspec" }, 1712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_FILTERSPEC, "FilterSpec" }, 1722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_SENDER_TEMPLATE, "Sender Template" }, 1732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_SENDER_TSPEC, "Sender TSpec" }, 1742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ADSPEC, "Adspec" }, 1752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_POLICY_DATA, "Policy Data" }, 1762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_CONFIRM, "Confirm" }, 1772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_LABEL, "Label" }, 1782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_LABEL_REQ, "Label Request" }, 1792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ERO, "ERO" }, 1802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_RRO, "RRO" }, 1812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_HELLO, "Hello" }, 1822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_MESSAGE_ID, "Message ID" }, 1832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_MESSAGE_ID_ACK, "Message ID Ack" }, 1842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_MESSAGE_ID_LIST, "Message ID List" }, 1852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_RECOVERY_LABEL, "Recovery Label" }, 1862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_UPSTREAM_LABEL, "Upstream Label" }, 1872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_LABEL_SET, "Label Set" }, 1882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ACCEPT_LABEL_SET, "Acceptable Label Set" }, 1892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_DETOUR, "Detour" }, 1902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_CLASSTYPE, "Class Type" }, 1912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_CLASSTYPE_OLD, "Class Type (old)" }, 1922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_SUGGESTED_LABEL, "Suggested Label" }, 1932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_PROPERTIES, "Properties" }, 1942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_FASTREROUTE, "Fast Re-Route" }, 1952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_SESSION_ATTRIBUTE, "Session Attribute" }, 1962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_GENERALIZED_UNI, "Generalized UNI" }, 1972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_CALL_ID, "Call-ID" }, 1982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_CALL_OPS, "Call Capability" }, 1992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_RESTART_CAPABILITY, "Restart Capability" }, 2002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_NOTIFY_REQ, "Notify Request" }, 2012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_PROTECTION, "Protection" }, 2022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ADMIN_STATUS, "Administrative Status" }, 20353f17a9db278d33517d9888dd77848f554522a38JP Abgrall { RSVP_OBJ_S2L, "Sub-LSP to LSP" }, 2042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 2052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 2062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 2072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_IPV4 1 2082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_IPV6 2 2092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_TUNNEL_IPV4 7 2102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_TUNNEL_IPV6 8 2112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_UNI_IPV4 11 /* OIF RSVP extensions UNI 1.0 Signaling Rel. 2 */ 2122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_1 1 2132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_2 2 2142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_3 3 2152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_CTYPE_4 4 21653f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define RSVP_CTYPE_12 12 21753f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define RSVP_CTYPE_13 13 21853f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define RSVP_CTYPE_14 14 2192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 2202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 2212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * the ctypes are not globally unique so for 2222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * translating it to strings we build a table based 2232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * on objects offsetted by the ctype 2242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 2252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 2262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_ctype_values[] = { 2272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RSVP_HOP+RSVP_CTYPE_IPV4, "IPv4" }, 2282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RSVP_HOP+RSVP_CTYPE_IPV6, "IPv6" }, 2292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RSVP_HOP+RSVP_CTYPE_3, "IPv4 plus opt. TLVs" }, 2302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RSVP_HOP+RSVP_CTYPE_4, "IPv6 plus opt. TLVs" }, 2312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_NOTIFY_REQ+RSVP_CTYPE_IPV4, "IPv4" }, 2322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_NOTIFY_REQ+RSVP_CTYPE_IPV6, "IPv6" }, 2332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_CONFIRM+RSVP_CTYPE_IPV4, "IPv4" }, 2342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_CONFIRM+RSVP_CTYPE_IPV6, "IPv6" }, 2352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_TIME_VALUES+RSVP_CTYPE_1, "1" }, 2362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_FLOWSPEC+RSVP_CTYPE_1, "obsolete" }, 2372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_FLOWSPEC+RSVP_CTYPE_2, "IntServ" }, 2382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SENDER_TSPEC+RSVP_CTYPE_2, "IntServ" }, 2392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_ADSPEC+RSVP_CTYPE_2, "IntServ" }, 2402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_IPV4, "IPv4" }, 2412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_IPV6, "IPv6" }, 2422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_3, "IPv6 Flow-label" }, 2432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, 24453f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_12, "IPv4 P2MP LSP Tunnel" }, 24553f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_13, "IPv6 P2MP LSP Tunnel" }, 2462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_IPV4, "IPv4" }, 2472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_IPV6, "IPv6" }, 2482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, 2492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_UNI_IPV4, "UNI IPv4" }, 25053f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_13, "IPv4 P2MP LSP Tunnel" }, 25153f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_14, "IPv6 P2MP LSP Tunnel" }, 2522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SENDER_TEMPLATE+RSVP_CTYPE_IPV4, "IPv4" }, 2532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SENDER_TEMPLATE+RSVP_CTYPE_IPV6, "IPv6" }, 2542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SENDER_TEMPLATE+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, 25553f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 256*RSVP_OBJ_SENDER_TEMPLATE+RSVP_CTYPE_12, "IPv4 P2MP LSP Tunnel" }, 25653f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 256*RSVP_OBJ_SENDER_TEMPLATE+RSVP_CTYPE_13, "IPv6 P2MP LSP Tunnel" }, 2572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_MESSAGE_ID+RSVP_CTYPE_1, "1" }, 2582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_MESSAGE_ID_ACK+RSVP_CTYPE_1, "Message id ack" }, 2592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_MESSAGE_ID_ACK+RSVP_CTYPE_2, "Message id nack" }, 2602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_MESSAGE_ID_LIST+RSVP_CTYPE_1, "1" }, 2612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_STYLE+RSVP_CTYPE_1, "1" }, 2622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_HELLO+RSVP_CTYPE_1, "Hello Request" }, 2632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_HELLO+RSVP_CTYPE_2, "Hello Ack" }, 2642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_LABEL_REQ+RSVP_CTYPE_1, "without label range" }, 2652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_LABEL_REQ+RSVP_CTYPE_2, "with ATM label range" }, 2662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_LABEL_REQ+RSVP_CTYPE_3, "with FR label range" }, 2672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_LABEL_REQ+RSVP_CTYPE_4, "Generalized Label" }, 2682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_LABEL+RSVP_CTYPE_1, "Label" }, 2692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_LABEL+RSVP_CTYPE_2, "Generalized Label" }, 2702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_LABEL+RSVP_CTYPE_3, "Waveband Switching" }, 2712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SUGGESTED_LABEL+RSVP_CTYPE_1, "Label" }, 2722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SUGGESTED_LABEL+RSVP_CTYPE_2, "Generalized Label" }, 2732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SUGGESTED_LABEL+RSVP_CTYPE_3, "Waveband Switching" }, 2742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_UPSTREAM_LABEL+RSVP_CTYPE_1, "Label" }, 2752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_UPSTREAM_LABEL+RSVP_CTYPE_2, "Generalized Label" }, 2762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_UPSTREAM_LABEL+RSVP_CTYPE_3, "Waveband Switching" }, 2772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RECOVERY_LABEL+RSVP_CTYPE_1, "Label" }, 2782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RECOVERY_LABEL+RSVP_CTYPE_2, "Generalized Label" }, 2792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RECOVERY_LABEL+RSVP_CTYPE_3, "Waveband Switching" }, 2802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_ERO+RSVP_CTYPE_IPV4, "IPv4" }, 2812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RRO+RSVP_CTYPE_IPV4, "IPv4" }, 2822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_ERROR_SPEC+RSVP_CTYPE_IPV4, "IPv4" }, 2832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_ERROR_SPEC+RSVP_CTYPE_IPV6, "IPv6" }, 2842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_ERROR_SPEC+RSVP_CTYPE_3, "IPv4 plus opt. TLVs" }, 2852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_ERROR_SPEC+RSVP_CTYPE_4, "IPv6 plus opt. TLVs" }, 2862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_RESTART_CAPABILITY+RSVP_CTYPE_1, "IPv4" }, 2872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_SESSION_ATTRIBUTE+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, 2882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_FASTREROUTE+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, /* old style*/ 2892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_FASTREROUTE+RSVP_CTYPE_1, "1" }, /* new style */ 2902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_DETOUR+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, 2912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_PROPERTIES+RSVP_CTYPE_1, "1" }, 2922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_ADMIN_STATUS+RSVP_CTYPE_1, "1" }, 2932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_CLASSTYPE+RSVP_CTYPE_1, "1" }, 2942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_CLASSTYPE_OLD+RSVP_CTYPE_1, "1" }, 2952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_LABEL_SET+RSVP_CTYPE_1, "1" }, 2962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 256*RSVP_OBJ_GENERALIZED_UNI+RSVP_CTYPE_1, "1" }, 29753f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 256*RSVP_OBJ_S2L+RSVP_CTYPE_IPV4, "IPv4 sub-LSP" }, 29853f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 256*RSVP_OBJ_S2L+RSVP_CTYPE_IPV6, "IPv6 sub-LSP" }, 2992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 3002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct rsvp_obj_integrity_t { 3032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t flags; 3042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t res; 3052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t key_id[6]; 3062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t sequence[8]; 3072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t digest[16]; 3082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_obj_integrity_flag_values[] = { 3112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x80, "Handshake" }, 3122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 3132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct rsvp_obj_frr_t { 3162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t setup_prio; 3172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t hold_prio; 3182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t hop_limit; 3192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t flags; 3202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t bandwidth[4]; 3212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t include_any[4]; 3222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t exclude_any[4]; 3232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t include_all[4]; 3242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_XRO_MASK_SUBOBJ(x) ((x)&0x7f) 3282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_XRO_MASK_LOOSE(x) ((x)&0x80) 3292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_XRO_RES 0 3312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_XRO_IPV4 1 3322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_XRO_IPV6 2 33353f17a9db278d33517d9888dd77848f554522a38JP Abgrall#define RSVP_OBJ_XRO_LABEL 3 3342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_XRO_ASN 32 3352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_XRO_MPLS 64 3362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_obj_xro_values[] = { 3382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_XRO_RES, "Reserved" }, 3392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_XRO_IPV4, "IPv4 prefix" }, 3402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_XRO_IPV6, "IPv6 prefix" }, 34153f17a9db278d33517d9888dd77848f554522a38JP Abgrall { RSVP_OBJ_XRO_LABEL, "Label" }, 3422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_XRO_ASN, "Autonomous system number" }, 3432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_XRO_MPLS, "MPLS label switched path termination" }, 3442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 3452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* draft-ietf-mpls-rsvp-lsp-fastreroute-07.txt */ 3482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_obj_rro_flag_values[] = { 3492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x01, "Local protection available" }, 3502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x02, "Local protection in use" }, 3512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x04, "Bandwidth protection" }, 3522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x08, "Node protection" }, 3532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 3542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 35653f17a9db278d33517d9888dd77848f554522a38JP Abgrall/* RFC3209 */ 35753f17a9db278d33517d9888dd77848f554522a38JP Abgrallstatic const struct tok rsvp_obj_rro_label_flag_values[] = { 35853f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 0x01, "Global" }, 35953f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 0, NULL} 36053f17a9db278d33517d9888dd77848f554522a38JP Abgrall}; 36153f17a9db278d33517d9888dd77848f554522a38JP Abgrall 3622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_resstyle_values[] = { 3632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 17, "Wildcard Filter" }, 3642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 10, "Fixed Filter" }, 3652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 18, "Shared Explicit" }, 3662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 3672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_INTSERV_GUARANTEED_SERV 2 3702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_INTSERV_CONTROLLED_LOAD 5 3712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_intserv_service_type_values[] = { 3732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 1, "Default/Global Information" }, 3742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_INTSERV_GUARANTEED_SERV, "Guaranteed Service" }, 3752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_INTSERV_CONTROLLED_LOAD, "Controlled Load" }, 3762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 3772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_intserv_parameter_id_values[] = { 3802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 4, "IS hop cnt" }, 3812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 6, "Path b/w estimate" }, 3822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 8, "Minimum path latency" }, 3832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 10, "Composed MTU" }, 3842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 127, "Token Bucket TSpec" }, 3852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 130, "Guaranteed Service RSpec" }, 3862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 133, "End-to-end composed value for C" }, 3872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 134, "End-to-end composed value for D" }, 3882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 135, "Since-last-reshaping point composed C" }, 3892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 136, "Since-last-reshaping point composed D" }, 3902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 3912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 39353f17a9db278d33517d9888dd77848f554522a38JP Abgrallstatic const struct tok rsvp_session_attribute_flag_values[] = { 39453f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 0x01, "Local Protection" }, 39553f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 0x02, "Label Recording" }, 39653f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 0x04, "SE Style" }, 39753f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 0x08, "Bandwidth protection" }, /* RFC4090 */ 39853f17a9db278d33517d9888dd77848f554522a38JP Abgrall { 0x10, "Node protection" }, /* RFC4090 */ 3992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 4002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 40253f17a9db278d33517d9888dd77848f554522a38JP Abgrallstatic const struct tok rsvp_obj_prop_tlv_values[] = { 4032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x01, "Cos" }, 4042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x02, "Metric 1" }, 4052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x04, "Metric 2" }, 4062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x08, "CCC Status" }, 4072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x10, "Path Type" }, 4082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 4092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ERROR_SPEC_CODE_ROUTING 24 4122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ERROR_SPEC_CODE_NOTIFY 25 4132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE 28 4142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE_OLD 125 4152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 41653f17a9db278d33517d9888dd77848f554522a38JP Abgrallstatic const struct tok rsvp_obj_error_code_values[] = { 4172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ERROR_SPEC_CODE_ROUTING, "Routing Problem" }, 4182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ERROR_SPEC_CODE_NOTIFY, "Notify Error" }, 4192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE, "Diffserv TE Error" }, 4202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE_OLD, "Diffserv TE Error (Old)" }, 4212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 4222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 42453f17a9db278d33517d9888dd77848f554522a38JP Abgrallstatic const struct tok rsvp_obj_error_code_routing_values[] = { 4252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 1, "Bad EXPLICIT_ROUTE object" }, 4262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 2, "Bad strict node" }, 4272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 3, "Bad loose node" }, 4282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 4, "Bad initial subobject" }, 4292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 5, "No route available toward destination" }, 4302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 6, "Unacceptable label value" }, 4312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 7, "RRO indicated routing loops" }, 4322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 8, "non-RSVP-capable router in the path" }, 4332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 9, "MPLS label allocation failure" }, 4342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 10, "Unsupported L3PID" }, 4352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 4362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 43853f17a9db278d33517d9888dd77848f554522a38JP Abgrallstatic const struct tok rsvp_obj_error_code_diffserv_te_values[] = { 4392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 1, "Unexpected CT object" }, 4402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 2, "Unsupported CT" }, 4412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 3, "Invalid CT value" }, 4422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 4, "CT/setup priority do not form a configured TE-Class" }, 4432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 5, "CT/holding priority do not form a configured TE-Class" }, 4442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 6, "CT/setup priority and CT/holding priority do not form a configured TE-Class" }, 4452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 7, "Inconsistency between signaled PSC and signaled CT" }, 4462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 8, "Inconsistency between signaled PHBs and signaled CT" }, 4472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 4482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* rfc3473 / rfc 3471 */ 4512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_obj_admin_status_flag_values[] = { 4522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x80000000, "Reflect" }, 4532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x00000004, "Testing" }, 4542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x00000002, "Admin-down" }, 4552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0x00000001, "Delete-in-progress" }, 4562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 4572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* label set actions - rfc3471 */ 4602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LABEL_SET_INCLUSIVE_LIST 0 4612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LABEL_SET_EXCLUSIVE_LIST 1 4622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LABEL_SET_INCLUSIVE_RANGE 2 4632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LABEL_SET_EXCLUSIVE_RANGE 3 4642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_obj_label_set_action_values[] = { 4662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LABEL_SET_INCLUSIVE_LIST, "Inclusive list" }, 4672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LABEL_SET_EXCLUSIVE_LIST, "Exclusive list" }, 4682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LABEL_SET_INCLUSIVE_RANGE, "Inclusive range" }, 4692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LABEL_SET_EXCLUSIVE_RANGE, "Exclusive range" }, 4702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 4712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* OIF RSVP extensions UNI 1.0 Signaling, release 2 */ 4742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_GEN_UNI_SUBOBJ_SOURCE_TNA_ADDRESS 1 4752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_GEN_UNI_SUBOBJ_DESTINATION_TNA_ADDRESS 2 4762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_GEN_UNI_SUBOBJ_DIVERSITY 3 4772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_GEN_UNI_SUBOBJ_EGRESS_LABEL 4 4782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RSVP_GEN_UNI_SUBOBJ_SERVICE_LEVEL 5 4792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok rsvp_obj_generalized_uni_values[] = { 4812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_GEN_UNI_SUBOBJ_SOURCE_TNA_ADDRESS, "Source TNA address" }, 4822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_GEN_UNI_SUBOBJ_DESTINATION_TNA_ADDRESS, "Destination TNA address" }, 4832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_GEN_UNI_SUBOBJ_DIVERSITY, "Diversity" }, 4842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_GEN_UNI_SUBOBJ_EGRESS_LABEL, "Egress label" }, 4852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { RSVP_GEN_UNI_SUBOBJ_SERVICE_LEVEL, "Service level" }, 4862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 4872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic int rsvp_intserv_print(const u_char *, u_short); 4902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 4922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * this is a dissector for all the intserv defined 4932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * specs as defined per rfc2215 4942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * it is called from various rsvp objects; 4952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * returns the amount of bytes being processed 4962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 4972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic int 4982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectrsvp_intserv_print(const u_char *tptr, u_short obj_tlen) { 4992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project int parameter_id,parameter_length; 5012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project union { 5022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project float f; 5032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int32_t i; 5042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } bw; 5052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 5072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return 0; 5082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project parameter_id = *(tptr); 5092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project parameter_length = EXTRACT_16BITS(tptr+2)<<2; /* convert wordcount to bytecount */ 5102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t Parameter ID: %s (%u), length: %u, Flags: [0x%02x]", 5122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_intserv_parameter_id_values,"unknown",parameter_id), 5132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project parameter_id, 5142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project parameter_length, 5152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(tptr+1)); 5162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < parameter_length+4) 5182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return 0; 5192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(parameter_id) { /* parameter_id */ 5202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 4: 5222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 5232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | 4 (e) | (f) | 1 (g) | 5252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | IS hop cnt (32-bit unsigned integer) | 5272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 5292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (parameter_length == 4) 5302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tIS hop count: %u", EXTRACT_32BITS(tptr+4)); 5312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 5322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 6: 5342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 5352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | 6 (h) | (i) | 1 (j) | 5372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Path b/w estimate (32-bit IEEE floating point number) | 5392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 5412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (parameter_length == 4) { 5422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bw.i = EXTRACT_32BITS(tptr+4); 5432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tPath b/w estimate: %.10g Mbps", bw.f/125000); 5442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 5452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 5462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 8: 5482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 5492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | 8 (k) | (l) | 1 (m) | 5512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Minimum path latency (32-bit integer) | 5532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 5552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (parameter_length == 4) { 5562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tMinimum path latency: "); 5572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (EXTRACT_32BITS(tptr+4) == 0xffffffff) 5582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("don't care"); 5592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project else 5602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%u", EXTRACT_32BITS(tptr+4)); 5612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 5622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 5632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 10: 5652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 5672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | 10 (n) | (o) | 1 (p) | 5692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Composed MTU (32-bit unsigned integer) | 5712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 5732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (parameter_length == 4) 5742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tComposed MTU: %u bytes", EXTRACT_32BITS(tptr+4)); 5752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 5762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 127: 5772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 5782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | 127 (e) | 0 (f) | 5 (g) | 5802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Token Bucket Rate [r] (32-bit IEEE floating point number) | 5822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Token Bucket Size [b] (32-bit IEEE floating point number) | 5842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Peak Data Rate [p] (32-bit IEEE floating point number) | 5862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Minimum Policed Unit [m] (32-bit integer) | 5882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Maximum Packet Size [M] (32-bit integer) | 5902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 5922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (parameter_length == 20) { 5942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bw.i = EXTRACT_32BITS(tptr+4); 5952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tToken Bucket Rate: %.10g Mbps", bw.f/125000); 5962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bw.i = EXTRACT_32BITS(tptr+8); 5972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tToken Bucket Size: %.10g bytes", bw.f); 5982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bw.i = EXTRACT_32BITS(tptr+12); 5992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tPeak Data Rate: %.10g Mbps", bw.f/125000); 6002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tMinimum Policed Unit: %u bytes", EXTRACT_32BITS(tptr+16)); 6012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tMaximum Packet Size: %u bytes", EXTRACT_32BITS(tptr+20)); 6022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 6032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 6042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 130: 6062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 6072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 6082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | 130 (h) | 0 (i) | 2 (j) | 6092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 6102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Rate [R] (32-bit IEEE floating point number) | 6112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 6122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Slack Term [S] (32-bit integer) | 6132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 6142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 6152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (parameter_length == 8) { 6172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bw.i = EXTRACT_32BITS(tptr+4); 6182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tRate: %.10g Mbps", bw.f/125000); 6192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tSlack Term: %u", EXTRACT_32BITS(tptr+8)); 6202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 6212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 6222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 133: 6242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 134: 6252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 135: 6262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case 136: 6272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (parameter_length == 4) 6282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\tValue: %u", EXTRACT_32BITS(tptr+4)); 6292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 6302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 6322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (vflag <= 1) 6332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project print_unknown_data(tptr+4,"\n\t\t",parameter_length); 6342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 6352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return (parameter_length+4); /* header length 4 bytes */ 6362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project} 6372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic int 63953f17a9db278d33517d9888dd77848f554522a38JP Abgrallrsvp_obj_print (const u_char *pptr 64053f17a9db278d33517d9888dd77848f554522a38JP Abgrall#ifndef HAVE_LIBCRYPTO 64153f17a9db278d33517d9888dd77848f554522a38JP Abgrall_U_ 64253f17a9db278d33517d9888dd77848f554522a38JP Abgrall#endif 64353f17a9db278d33517d9888dd77848f554522a38JP Abgrall, u_int plen 64453f17a9db278d33517d9888dd77848f554522a38JP Abgrall#ifndef HAVE_LIBCRYPTO 64553f17a9db278d33517d9888dd77848f554522a38JP Abgrall_U_ 64653f17a9db278d33517d9888dd77848f554522a38JP Abgrall#endif 64753f17a9db278d33517d9888dd77848f554522a38JP Abgrall, const u_char *tptr, 64853f17a9db278d33517d9888dd77848f554522a38JP Abgrall const char *ident, u_int tlen) { 6492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct rsvp_object_header *rsvp_obj_header; 6512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const u_char *obj_tptr; 6522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project union { 6532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct rsvp_obj_integrity_t *rsvp_obj_integrity; 6542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct rsvp_obj_frr_t *rsvp_obj_frr; 6552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } obj_ptr; 6562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_short rsvp_obj_len,rsvp_obj_ctype,obj_tlen,intserv_serv_tlen; 65853f17a9db278d33517d9888dd77848f554522a38JP Abgrall int hexdump,processed,padbytes,error_code,error_value,i,sigcheck; 6592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project union { 6602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project float f; 6612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int32_t i; 6622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } bw; 6632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t namelen; 6642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int action, subchannel; 6662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(tlen>=sizeof(struct rsvp_object_header)) { 6682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* did we capture enough for fully decoding the object header ? */ 6692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (!TTEST2(*tptr, sizeof(struct rsvp_object_header))) 6702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project goto trunc; 6712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_obj_header = (const struct rsvp_object_header *)tptr; 6732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_obj_len=EXTRACT_16BITS(rsvp_obj_header->length); 6742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_obj_ctype=rsvp_obj_header->ctype; 6752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if(rsvp_obj_len % 4) { 6772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%sERROR: object header size %u not a multiple of 4", ident, rsvp_obj_len); 6782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 6792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 6802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if(rsvp_obj_len < sizeof(struct rsvp_object_header)) { 6812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%sERROR: object header too short %u < %lu", ident, rsvp_obj_len, 6822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (unsigned long)sizeof(const struct rsvp_object_header)); 6832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 6842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 6852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s%s Object (%u) Flags: [%s", 6872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 6882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_values, 6892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown", 6902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_obj_header->class_num), 6912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_obj_header->class_num, 6922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ((rsvp_obj_header->class_num)&0x80) ? "ignore" : "reject"); 6932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (rsvp_obj_header->class_num > 128) 6952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf(" %s", 6962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ((rsvp_obj_header->class_num)&0x40) ? "and forward" : "silently"); 6972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf(" if unknown], Class-Type: %s (%u), length: %u", 6992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_ctype_values, 7002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown", 7012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ((rsvp_obj_header->class_num)<<8)+rsvp_obj_ctype), 7022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_obj_ctype, 7032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_obj_len); 7042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if(tlen < rsvp_obj_len) { 7062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%sERROR: object goes past end of objects TLV", ident); 7072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 7082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 7092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr=tptr+sizeof(struct rsvp_object_header); 7112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen=rsvp_obj_len-sizeof(struct rsvp_object_header); 7122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* did we capture enough for fully decoding the object ? */ 7142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (!TTEST2(*tptr, rsvp_obj_len)) 7152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 7162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=FALSE; 7172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_header->class_num) { 7192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_SESSION: 7202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 7212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV4: 7222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 7232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 7242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv4 DestAddress: %s, Protocol ID: 0x%02x", 7252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 7262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 7272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+sizeof(struct in_addr))); 7282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Flags: [0x%02x], DestPort %u", 7292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 7302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+5), 7312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+6)); 7322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 7332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 7342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 7362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV6: 7372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 20) 7382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 7392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv6 DestAddress: %s, Protocol ID: 0x%02x", 7402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 7412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr), 7422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+sizeof(struct in6_addr))); 7432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Flags: [0x%02x], DestPort %u", 7442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 7452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+sizeof(struct in6_addr)+1), 7462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+sizeof(struct in6_addr)+2)); 7472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=20; 7482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=20; 7492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_TUNNEL_IPV6: 7522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 36) 7532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 7542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv6 Tunnel EndPoint: %s, Tunnel ID: 0x%04x, Extended Tunnel ID: %s", 7552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 7562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr), 7572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+18), 7582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr+20)); 7592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=36; 7602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=36; 7612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 76253f17a9db278d33517d9888dd77848f554522a38JP Abgrall 76353f17a9db278d33517d9888dd77848f554522a38JP Abgrall case RSVP_CTYPE_14: /* IPv6 p2mp LSP Tunnel */ 76453f17a9db278d33517d9888dd77848f554522a38JP Abgrall if (obj_tlen < 26) 76553f17a9db278d33517d9888dd77848f554522a38JP Abgrall return -1; 76653f17a9db278d33517d9888dd77848f554522a38JP Abgrall printf("%s IPv6 P2MP LSP ID: 0x%08x, Tunnel ID: 0x%04x, Extended Tunnel ID: %s", 76753f17a9db278d33517d9888dd77848f554522a38JP Abgrall ident, 76853f17a9db278d33517d9888dd77848f554522a38JP Abgrall EXTRACT_32BITS(obj_tptr), 76953f17a9db278d33517d9888dd77848f554522a38JP Abgrall EXTRACT_16BITS(obj_tptr+6), 77053f17a9db278d33517d9888dd77848f554522a38JP Abgrall ip6addr_string(obj_tptr+8)); 77153f17a9db278d33517d9888dd77848f554522a38JP Abgrall obj_tlen-=26; 77253f17a9db278d33517d9888dd77848f554522a38JP Abgrall obj_tptr+=26; 77353f17a9db278d33517d9888dd77848f554522a38JP Abgrall break; 7742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 77553f17a9db278d33517d9888dd77848f554522a38JP Abgrall case RSVP_CTYPE_13: /* IPv4 p2mp LSP Tunnel */ 77653f17a9db278d33517d9888dd77848f554522a38JP Abgrall if (obj_tlen < 12) 77753f17a9db278d33517d9888dd77848f554522a38JP Abgrall return -1; 77853f17a9db278d33517d9888dd77848f554522a38JP Abgrall printf("%s IPv4 P2MP LSP ID: %s, Tunnel ID: 0x%04x, Extended Tunnel ID: %s", 77953f17a9db278d33517d9888dd77848f554522a38JP Abgrall ident, 78053f17a9db278d33517d9888dd77848f554522a38JP Abgrall ipaddr_string(obj_tptr), 78153f17a9db278d33517d9888dd77848f554522a38JP Abgrall EXTRACT_16BITS(obj_tptr+6), 78253f17a9db278d33517d9888dd77848f554522a38JP Abgrall ipaddr_string(obj_tptr+8)); 78353f17a9db278d33517d9888dd77848f554522a38JP Abgrall obj_tlen-=12; 78453f17a9db278d33517d9888dd77848f554522a38JP Abgrall obj_tptr+=12; 78553f17a9db278d33517d9888dd77848f554522a38JP Abgrall break; 7862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_TUNNEL_IPV4: 7872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_UNI_IPV4: 7882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 12) 7892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 7902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv4 Tunnel EndPoint: %s, Tunnel ID: 0x%04x, Extended Tunnel ID: %s", 7912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 7922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 7932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+6), 7942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr+8)); 7952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=12; 7962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=12; 7972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 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_CONFIRM: 8042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 8052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV4: 8062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < sizeof(struct in_addr)) 8072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 8082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv4 Receiver Address: %s", 8092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 8102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr)); 8112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=sizeof(struct in_addr); 8122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=sizeof(struct in_addr); 8132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 8152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV6: 8162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < sizeof(struct in6_addr)) 8172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 8182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv6 Receiver Address: %s", 8192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 8202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr)); 8212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=sizeof(struct in6_addr); 8222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=sizeof(struct in6_addr); 8232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 8252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 8262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 8272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 8282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_NOTIFY_REQ: 8312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 8322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV4: 8332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < sizeof(struct in_addr)) 8342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 8352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv4 Notify Node Address: %s", 8362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 8372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr)); 8382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=sizeof(struct in_addr); 8392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=sizeof(struct in_addr); 8402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 8422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV6: 8432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < sizeof(struct in6_addr)) 8442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 8452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv6 Notify Node Address: %s", 8462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 8472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr)); 8482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=sizeof(struct in6_addr); 8492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=sizeof(struct in6_addr); 8502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 8522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 8532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 8542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 8552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_SUGGESTED_LABEL: /* fall through */ 8582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_UPSTREAM_LABEL: /* fall through */ 8592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_RECOVERY_LABEL: /* fall through */ 8602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_LABEL: 8612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 8622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 8632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(obj_tlen >= 4 ) { 8642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Label: %u", ident, EXTRACT_32BITS(obj_tptr)); 8652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 8662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 8672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 8682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_2: 8702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 8712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 8722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Generalized Label: %u", 8732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 8742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr)); 8752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 8762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 8772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_3: 8792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 12) 8802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 8812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Waveband ID: %u%s Start Label: %u, Stop Label: %u", 8822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 8832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr), 8842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 8852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+4), 8862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+8)); 8872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=12; 8882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=12; 8892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 8912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 8922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 8932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_STYLE: 8962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 8972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 8982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 8992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 9002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Reservation Style: %s, Flags: [0x%02x]", 9012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 9022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_resstyle_values, 9032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown", 9042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_24BITS(obj_tptr+1)), 9052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr)); 9062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 9072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 9082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 9092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 9102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 9112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 9122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 9132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 9142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_SENDER_TEMPLATE: 9152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 9162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV4: 9172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 9182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 9192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Source Address: %s, Source Port: %u", 9202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 9212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 9222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+6)); 9232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 9242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 9252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 9262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 9272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV6: 9282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 20) 9292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 9302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Source Address: %s, Source Port: %u", 9312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 9322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr), 9332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+18)); 9342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=20; 9352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=20; 9362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 93753f17a9db278d33517d9888dd77848f554522a38JP Abgrall case RSVP_CTYPE_13: /* IPv6 p2mp LSP tunnel */ 93853f17a9db278d33517d9888dd77848f554522a38JP Abgrall if (obj_tlen < 40) 93953f17a9db278d33517d9888dd77848f554522a38JP Abgrall return-1; 94053f17a9db278d33517d9888dd77848f554522a38JP Abgrall printf("%s IPv6 Tunnel Sender Address: %s, LSP ID: 0x%04x" 94153f17a9db278d33517d9888dd77848f554522a38JP Abgrall "%s Sub-Group Originator ID: %s, Sub-Group ID: 0x%04x", 94253f17a9db278d33517d9888dd77848f554522a38JP Abgrall ident, 94353f17a9db278d33517d9888dd77848f554522a38JP Abgrall ip6addr_string(obj_tptr), 94453f17a9db278d33517d9888dd77848f554522a38JP Abgrall EXTRACT_16BITS(obj_tptr+18), 94553f17a9db278d33517d9888dd77848f554522a38JP Abgrall ident, 94653f17a9db278d33517d9888dd77848f554522a38JP Abgrall ip6addr_string(obj_tptr+20), 94753f17a9db278d33517d9888dd77848f554522a38JP Abgrall EXTRACT_16BITS(obj_tptr+38)); 94853f17a9db278d33517d9888dd77848f554522a38JP Abgrall obj_tlen-=40; 94953f17a9db278d33517d9888dd77848f554522a38JP Abgrall obj_tptr+=40; 95053f17a9db278d33517d9888dd77848f554522a38JP Abgrall break; 9512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 9522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_TUNNEL_IPV4: 9532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 9542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 9552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s IPv4 Tunnel Sender Address: %s, LSP-ID: 0x%04x", 9562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 9572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 9582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+6)); 9592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 9602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 9612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 96253f17a9db278d33517d9888dd77848f554522a38JP Abgrall case RSVP_CTYPE_12: /* IPv4 p2mp LSP tunnel */ 96353f17a9db278d33517d9888dd77848f554522a38JP Abgrall if (obj_tlen < 16) 96453f17a9db278d33517d9888dd77848f554522a38JP Abgrall return-1; 96553f17a9db278d33517d9888dd77848f554522a38JP Abgrall printf("%s IPv4 Tunnel Sender Address: %s, LSP ID: 0x%04x" 96653f17a9db278d33517d9888dd77848f554522a38JP Abgrall "%s Sub-Group Originator ID: %s, Sub-Group ID: 0x%04x", 96753f17a9db278d33517d9888dd77848f554522a38JP Abgrall ident, 96853f17a9db278d33517d9888dd77848f554522a38JP Abgrall ipaddr_string(obj_tptr), 96953f17a9db278d33517d9888dd77848f554522a38JP Abgrall EXTRACT_16BITS(obj_tptr+6), 97053f17a9db278d33517d9888dd77848f554522a38JP Abgrall ident, 97153f17a9db278d33517d9888dd77848f554522a38JP Abgrall ipaddr_string(obj_tptr+8), 97253f17a9db278d33517d9888dd77848f554522a38JP Abgrall EXTRACT_16BITS(obj_tptr+12)); 97353f17a9db278d33517d9888dd77848f554522a38JP Abgrall obj_tlen-=16; 97453f17a9db278d33517d9888dd77848f554522a38JP Abgrall obj_tptr+=16; 97553f17a9db278d33517d9888dd77848f554522a38JP Abgrall break; 9762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 9772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 9782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 9792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 9802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 9812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_LABEL_REQ: 9822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 9832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 9842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(obj_tlen >= 4 ) { 9852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s L3 Protocol ID: %s", 9862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 9872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(ethertype_values, 9882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown Protocol (0x%04x)", 9892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+2))); 9902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 9912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 9922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 9932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 9942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_2: 9952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 12) 9962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 9972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s L3 Protocol ID: %s", 9982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 9992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(ethertype_values, 10002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown Protocol (0x%04x)", 10012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+2))); 10022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf(",%s merge capability",((*(obj_tptr+4))&0x80) ? "no" : "" ); 10032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Minimum VPI/VCI: %u/%u", 10042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 10052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (EXTRACT_16BITS(obj_tptr+4))&0xfff, 10062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (EXTRACT_16BITS(obj_tptr+6))&0xfff); 10072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Maximum VPI/VCI: %u/%u", 10082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 10092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (EXTRACT_16BITS(obj_tptr+8))&0xfff, 10102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (EXTRACT_16BITS(obj_tptr+10))&0xfff); 10112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=12; 10122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=12; 10132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 10142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_3: 10152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 12) 10162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 10172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s L3 Protocol ID: %s", 10182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 10192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(ethertype_values, 10202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown Protocol (0x%04x)", 10212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+2))); 10222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Minimum/Maximum DLCI: %u/%u, %s%s bit DLCI", 10232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 10242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (EXTRACT_32BITS(obj_tptr+4))&0x7fffff, 10252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (EXTRACT_32BITS(obj_tptr+8))&0x7fffff, 10262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (((EXTRACT_16BITS(obj_tptr+4)>>7)&3) == 0 ) ? "10" : "", 10272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (((EXTRACT_16BITS(obj_tptr+4)>>7)&3) == 2 ) ? "23" : ""); 10282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=12; 10292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=12; 10302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 10312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_4: 10322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 10332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 10342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s LSP Encoding Type: %s (%u)", 10352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 10362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(gmpls_encoding_values, 10372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown", 10382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *obj_tptr), 10392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *obj_tptr); 10402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Switching Type: %s (%u), Payload ID: %s (0x%04x)", 10412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 10422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(gmpls_switch_cap_values, 10432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown", 10442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+1)), 10452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+1), 10462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(gmpls_payload_values, 10472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown", 10482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+2)), 10492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+2)); 10502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 10512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 10522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 10532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 10542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 10552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 10562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 10572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 10582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_RRO: 10592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ERO: 10602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 10612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV4: 10622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(obj_tlen >= 4 ) { 10632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Subobject Type: %s, length %u", 10642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 10652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_xro_values, 10662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown %u", 10672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project RSVP_OBJ_XRO_MASK_SUBOBJ(*obj_tptr)), 10682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+1)); 10692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 10702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (*(obj_tptr+1) == 0) { /* prevent infinite loops */ 10712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s ERROR: zero length ERO subtype",ident); 10722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 10732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 10742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 10752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(RSVP_OBJ_XRO_MASK_SUBOBJ(*obj_tptr)) { 10762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_XRO_IPV4: 10772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf(", %s, %s/%u, Flags: [%s]", 10782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project RSVP_OBJ_XRO_MASK_LOOSE(*obj_tptr) ? "Loose" : "Strict", 10792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr+2), 10802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+6), 10812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bittok2str(rsvp_obj_rro_flag_values, 10822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "none", 10832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+7))); /* rfc3209 says that this field is rsvd. */ 108453f17a9db278d33517d9888dd77848f554522a38JP Abgrall break; 108553f17a9db278d33517d9888dd77848f554522a38JP Abgrall case RSVP_OBJ_XRO_LABEL: 108653f17a9db278d33517d9888dd77848f554522a38JP Abgrall printf(", Flags: [%s] (%#x), Class-Type: %s (%u), %u", 108753f17a9db278d33517d9888dd77848f554522a38JP Abgrall bittok2str(rsvp_obj_rro_label_flag_values, 108853f17a9db278d33517d9888dd77848f554522a38JP Abgrall "none", 108953f17a9db278d33517d9888dd77848f554522a38JP Abgrall *(obj_tptr+2)), 109053f17a9db278d33517d9888dd77848f554522a38JP Abgrall *(obj_tptr+2), 109153f17a9db278d33517d9888dd77848f554522a38JP Abgrall tok2str(rsvp_ctype_values, 109253f17a9db278d33517d9888dd77848f554522a38JP Abgrall "Unknown", 109353f17a9db278d33517d9888dd77848f554522a38JP Abgrall *(obj_tptr+3) + 256*RSVP_OBJ_RRO), 109453f17a9db278d33517d9888dd77848f554522a38JP Abgrall *(obj_tptr+3), 109553f17a9db278d33517d9888dd77848f554522a38JP Abgrall EXTRACT_32BITS(obj_tptr+4)); 10962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 10972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=*(obj_tptr+1); 10982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=*(obj_tptr+1); 10992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 11002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 11022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 11032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 11042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_HELLO: 11072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 11082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 11092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_2: 11102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 11112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 11122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Source Instance: 0x%08x, Destination Instance: 0x%08x", 11132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 11142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr), 11152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+4)); 11162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 11172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 11182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 11202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 11212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 11222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_RESTART_CAPABILITY: 11252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 11262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 11272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 11282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 11292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Restart Time: %ums, Recovery Time: %ums", 11302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 11312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr), 11322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+4)); 11332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 11342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 11352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 11372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 11382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 11392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_SESSION_ATTRIBUTE: 11422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 11432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_TUNNEL_IPV4: 11442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 11452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 11462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project namelen = *(obj_tptr+3); 11472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4+namelen) 11482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 11492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Session Name: ", ident); 11502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project for (i = 0; i < namelen; i++) 11512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project safeputchar(*(obj_tptr+4+i)); 115253f17a9db278d33517d9888dd77848f554522a38JP Abgrall printf("%s Setup Priority: %u, Holding Priority: %u, Flags: [%s] (%#x)", 11532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 11542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (int)*obj_tptr, 11552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (int)*(obj_tptr+1), 115653f17a9db278d33517d9888dd77848f554522a38JP Abgrall bittok2str(rsvp_session_attribute_flag_values, 11572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "none", 115853f17a9db278d33517d9888dd77848f554522a38JP Abgrall *(obj_tptr+2)), 115953f17a9db278d33517d9888dd77848f554522a38JP Abgrall *(obj_tptr+2)); 11602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4+*(obj_tptr+3); 11612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4+*(obj_tptr+3); 11622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 11642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 11652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 11662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 11672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_GENERALIZED_UNI: 11692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 11702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project int subobj_type,af,subobj_len,total_subobj_len; 11712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 11732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 11752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 11762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* read variable length subobjects */ 11782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project total_subobj_len = obj_tlen; 11792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(total_subobj_len > 0) { 11802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subobj_len = EXTRACT_16BITS(obj_tptr); 11812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subobj_type = (EXTRACT_16BITS(obj_tptr+2))>>8; 11822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project af = (EXTRACT_16BITS(obj_tptr+2))&0x00FF; 11832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Subobject Type: %s (%u), AF: %s (%u), length: %u", 11852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 11862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_generalized_uni_values, "Unknown", subobj_type), 11872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subobj_type, 11882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(af_values, "Unknown", af), af, 11892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subobj_len); 11902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(subobj_type) { 11922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_GEN_UNI_SUBOBJ_SOURCE_TNA_ADDRESS: 11932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_GEN_UNI_SUBOBJ_DESTINATION_TNA_ADDRESS: 11942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 11952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(af) { 11962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case AFNUM_INET: 11972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (subobj_len < 8) 11982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 11992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s UNI IPv4 TNA address: %s", 12002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, ipaddr_string(obj_tptr+4)); 12012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 12032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case AFNUM_INET6: 12042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (subobj_len < 20) 12052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 12062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s UNI IPv6 TNA address: %s", 12072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, ip6addr_string(obj_tptr+4)); 12082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 12102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case AFNUM_NSAP: 12112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (subobj_len) { 12122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* unless we have a TLV parser lets just hexdump */ 12132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 12142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 12152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 12172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 12192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_GEN_UNI_SUBOBJ_DIVERSITY: 12202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (subobj_len) { 12212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* unless we have a TLV parser lets just hexdump */ 12222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 12232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 12242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 12262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_GEN_UNI_SUBOBJ_EGRESS_LABEL: 12272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (subobj_len < 16) { 12282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 12292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 12302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 12312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s U-bit: %x, Label type: %u, Logical port id: %u, Label: %u", 12322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 12332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ((EXTRACT_32BITS(obj_tptr+4))>>31), 12342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ((EXTRACT_32BITS(obj_tptr+4))&0xFF), 12352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+8), 12362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+12)); 12372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 12392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_GEN_UNI_SUBOBJ_SERVICE_LEVEL: 12402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (subobj_len < 8) { 12412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 12422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 12432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 12442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Service level: %u", 12452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, (EXTRACT_32BITS(obj_tptr+4))>>24); 12462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 12482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 12492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 12502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 12522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project total_subobj_len-=subobj_len; 12532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=subobj_len; 12542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen+=subobj_len; 12552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 12562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 12572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (total_subobj_len) { 12582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* unless we have a TLV parser lets just hexdump */ 12592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 12602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 12612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 12632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 12642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 12652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 12662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 12682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_RSVP_HOP: 12692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 12702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_3: /* fall through - FIXME add TLV parser */ 12712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV4: 12722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 12732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 12742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Previous/Next Interface: %s, Logical Interface Handle: 0x%08x", 12752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 12762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 12772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+4)); 12782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 12792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 12802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen) 12812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; /* unless we have a TLV parser lets just hexdump */ 12822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 12842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_4: /* fall through - FIXME add TLV parser */ 12852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV6: 12862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 20) 12872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 12882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Previous/Next Interface: %s, Logical Interface Handle: 0x%08x", 12892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 12902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr), 12912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+16)); 12922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=20; 12932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=20; 12942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; /* unless we have a TLV parser lets just hexdump */ 12952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 12962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 12972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 12982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 12992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 13002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 13022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_TIME_VALUES: 13032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 13042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 13052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 13062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 13072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Refresh Period: %ums", 13082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 13092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr)); 13102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 13112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 13122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 13142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 13152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 13162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 13182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* those three objects do share the same semantics */ 13192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_SENDER_TSPEC: 13202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ADSPEC: 13212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_FLOWSPEC: 13222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 13232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_2: 13242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 13252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 13262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Msg-Version: %u, length: %u", 13272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 13282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (*obj_tptr & 0xf0) >> 4, 13292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+2)<<2); 13302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; /* get to the start of the service header */ 13312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 13322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 13332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while (obj_tlen >= 4) { 13342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project intserv_serv_tlen=EXTRACT_16BITS(obj_tptr+2)<<2; 13352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Service Type: %s (%u), break bit %s set, Service length: %u", 13362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 13372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_intserv_service_type_values,"unknown",*(obj_tptr)), 13382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr), 13392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (*(obj_tptr+1)&0x80) ? "" : "not", 13402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project intserv_serv_tlen); 13412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 13422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; /* get to the start of the parameter list */ 13432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 13442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 13452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while (intserv_serv_tlen>=4) { 13462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project processed = rsvp_intserv_print(obj_tptr, obj_tlen); 13472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (processed == 0) 13482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=processed; 13502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project intserv_serv_tlen-=processed; 13512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=processed; 13522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 13532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 13542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 13562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 13572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 13582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 13602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_FILTERSPEC: 13612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 13622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV4: 13632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 13642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 13652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Source Address: %s, Source Port: %u", 13662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 13672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 13682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+6)); 13692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 13702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 13712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 13732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV6: 13742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 20) 13752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 13762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Source Address: %s, Source Port: %u", 13772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 13782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr), 13792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+18)); 13802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=20; 13812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=20; 13822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_3: 13842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 20) 13852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 13862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Source Address: %s, Flow Label: %u", 13872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 13882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr), 13892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_24BITS(obj_tptr+17)); 13902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=20; 13912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=20; 13922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 13932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_TUNNEL_IPV6: 13942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 20) 13952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 13962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Source Address: %s, LSP-ID: 0x%04x", 13972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 13982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 13992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+18)); 14002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=20; 14012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=20; 14022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 140353f17a9db278d33517d9888dd77848f554522a38JP Abgrall case RSVP_CTYPE_13: /* IPv6 p2mp LSP tunnel */ 140453f17a9db278d33517d9888dd77848f554522a38JP Abgrall if (obj_tlen < 40) 140553f17a9db278d33517d9888dd77848f554522a38JP Abgrall return-1; 140653f17a9db278d33517d9888dd77848f554522a38JP Abgrall printf("%s IPv6 Tunnel Sender Address: %s, LSP ID: 0x%04x" 140753f17a9db278d33517d9888dd77848f554522a38JP Abgrall "%s Sub-Group Originator ID: %s, Sub-Group ID: 0x%04x", 140853f17a9db278d33517d9888dd77848f554522a38JP Abgrall ident, 140953f17a9db278d33517d9888dd77848f554522a38JP Abgrall ip6addr_string(obj_tptr), 141053f17a9db278d33517d9888dd77848f554522a38JP Abgrall EXTRACT_16BITS(obj_tptr+18), 141153f17a9db278d33517d9888dd77848f554522a38JP Abgrall ident, 141253f17a9db278d33517d9888dd77848f554522a38JP Abgrall ip6addr_string(obj_tptr+20), 141353f17a9db278d33517d9888dd77848f554522a38JP Abgrall EXTRACT_16BITS(obj_tptr+38)); 141453f17a9db278d33517d9888dd77848f554522a38JP Abgrall obj_tlen-=40; 141553f17a9db278d33517d9888dd77848f554522a38JP Abgrall obj_tptr+=40; 141653f17a9db278d33517d9888dd77848f554522a38JP Abgrall break; 14172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 14182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_TUNNEL_IPV4: 14192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 14202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 14212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Source Address: %s, LSP-ID: 0x%04x", 14222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 14232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 14242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr+6)); 14252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 14262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 14272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 142853f17a9db278d33517d9888dd77848f554522a38JP Abgrall case RSVP_CTYPE_12: /* IPv4 p2mp LSP tunnel */ 142953f17a9db278d33517d9888dd77848f554522a38JP Abgrall if (obj_tlen < 16) 143053f17a9db278d33517d9888dd77848f554522a38JP Abgrall return-1; 143153f17a9db278d33517d9888dd77848f554522a38JP Abgrall printf("%s IPv4 Tunnel Sender Address: %s, LSP ID: 0x%04x" 143253f17a9db278d33517d9888dd77848f554522a38JP Abgrall "%s Sub-Group Originator ID: %s, Sub-Group ID: 0x%04x", 143353f17a9db278d33517d9888dd77848f554522a38JP Abgrall ident, 143453f17a9db278d33517d9888dd77848f554522a38JP Abgrall ipaddr_string(obj_tptr), 143553f17a9db278d33517d9888dd77848f554522a38JP Abgrall EXTRACT_16BITS(obj_tptr+6), 143653f17a9db278d33517d9888dd77848f554522a38JP Abgrall ident, 143753f17a9db278d33517d9888dd77848f554522a38JP Abgrall ipaddr_string(obj_tptr+8), 143853f17a9db278d33517d9888dd77848f554522a38JP Abgrall EXTRACT_16BITS(obj_tptr+12)); 143953f17a9db278d33517d9888dd77848f554522a38JP Abgrall obj_tlen-=16; 144053f17a9db278d33517d9888dd77848f554522a38JP Abgrall obj_tptr+=16; 144153f17a9db278d33517d9888dd77848f554522a38JP Abgrall break; 14422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 14432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 14442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 14452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 14462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 14472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_FASTREROUTE: 14482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* the differences between c-type 1 and 7 are minor */ 14492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_ptr.rsvp_obj_frr = (const struct rsvp_obj_frr_t *)obj_tptr; 14502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bw.i = EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->bandwidth); 14512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 14522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 14532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: /* new style */ 14542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < sizeof(struct rsvp_obj_frr_t)) 14552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 14562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Setup Priority: %u, Holding Priority: %u, Hop-limit: %u, Bandwidth: %.10g Mbps", 14572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 14582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (int)obj_ptr.rsvp_obj_frr->setup_prio, 14592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (int)obj_ptr.rsvp_obj_frr->hold_prio, 14602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (int)obj_ptr.rsvp_obj_frr->hop_limit, 14612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bw.f*8/1000000); 14622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Include-any: 0x%08x, Exclude-any: 0x%08x, Include-all: 0x%08x", 14632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 14642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->include_any), 14652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->exclude_any), 14662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->include_all)); 14672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=sizeof(struct rsvp_obj_frr_t); 14682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=sizeof(struct rsvp_obj_frr_t); 14692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 14702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 14712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_TUNNEL_IPV4: /* old style */ 14722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 16) 14732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 14742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Setup Priority: %u, Holding Priority: %u, Hop-limit: %u, Bandwidth: %.10g Mbps", 14752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 14762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (int)obj_ptr.rsvp_obj_frr->setup_prio, 14772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (int)obj_ptr.rsvp_obj_frr->hold_prio, 14782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (int)obj_ptr.rsvp_obj_frr->hop_limit, 14792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bw.f*8/1000000); 14802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Include Colors: 0x%08x, Exclude Colors: 0x%08x", 14812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 14822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->include_any), 14832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->exclude_any)); 14842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=16; 14852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=16; 14862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 14872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 14882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 14892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 14902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 14912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 14922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 14932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_DETOUR: 14942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 14952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_TUNNEL_IPV4: 14962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(obj_tlen >= 8) { 14972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s PLR-ID: %s, Avoid-Node-ID: %s", 14982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 14992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 15002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr+4)); 15012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 15022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 15032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 15042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 15062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 15072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 15082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 15102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_CLASSTYPE: 15112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_CLASSTYPE_OLD: /* fall through */ 15122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 15132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 15142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s CT: %u", 15152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 15162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr)&0x7); 15172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 15182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 15192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 15212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 15222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 15232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 15252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ERROR_SPEC: 15262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 15272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_3: /* fall through - FIXME add TLV parser */ 15282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV4: 15292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 15302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 15312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_code=*(obj_tptr+5); 15322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_value=EXTRACT_16BITS(obj_tptr+6); 15332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Error Node Address: %s, Flags: [0x%02x]%s Error Code: %s (%u)", 15342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 15352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(obj_tptr), 15362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+4), 15372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 15382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_error_code_values,"unknown",error_code), 15392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_code); 15402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch (error_code) { 15412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ERROR_SPEC_CODE_ROUTING: 15422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf(", Error Value: %s (%u)", 15432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_error_code_routing_values,"unknown",error_value), 15442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_value); 15452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE: /* fall through */ 15472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE_OLD: 15482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf(", Error Value: %s (%u)", 15492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_error_code_diffserv_te_values,"unknown",error_value), 15502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_value); 15512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 15532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf(", Unknown Error Value (%u)", error_value); 15542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 15562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=8; 15572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=8; 15582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 15602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_4: /* fall through - FIXME add TLV parser */ 15612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_IPV6: 15622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 20) 15632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 15642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_code=*(obj_tptr+17); 15652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_value=EXTRACT_16BITS(obj_tptr+18); 15662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Error Node Address: %s, Flags: [0x%02x]%s Error Code: %s (%u)", 15672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 15682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(obj_tptr), 15692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+16), 15702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 15712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_error_code_values,"unknown",error_code), 15722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_code); 15732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 15742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch (error_code) { 15752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ERROR_SPEC_CODE_ROUTING: 15762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf(", Error Value: %s (%u)", 15772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_error_code_routing_values,"unknown",error_value), 15782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project error_value); 15792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 15812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 15832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=20; 15842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=20; 15852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 15872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 15882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 15892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 15902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 15912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 15922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_PROPERTIES: 15932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 15942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 15952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 15962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 15972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project padbytes = EXTRACT_16BITS(obj_tptr+2); 15982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s TLV count: %u, padding bytes: %u", 15992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 16002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_tptr), 16012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project padbytes); 16022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 16032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 16042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* loop through as long there is anything longer than the TLV header (2) */ 16052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(obj_tlen >= 2 + padbytes) { 16062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s %s TLV (0x%02x), length: %u", /* length includes header */ 16072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 16082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_prop_tlv_values,"unknown",*obj_tptr), 16092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *obj_tptr, 16102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *(obj_tptr+1)); 16112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < *(obj_tptr+1)) 16122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 16132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (*(obj_tptr+1) < 2) 16142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 16152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project print_unknown_data(obj_tptr+2,"\n\t\t",*(obj_tptr+1)-2); 16162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=*(obj_tptr+1); 16172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=*(obj_tptr+1); 16182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 16192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 16202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 16212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 16222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 16232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 16242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_MESSAGE_ID: /* fall through */ 16262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_MESSAGE_ID_ACK: /* fall through */ 16272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_MESSAGE_ID_LIST: 16282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 16292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 16302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_2: 16312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 8) 16322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 16332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Flags [0x%02x], epoch: %u", 16342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 16352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *obj_tptr, 16362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_24BITS(obj_tptr+1)); 16372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 16382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 16392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* loop through as long there are no messages left */ 16402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(obj_tlen >= 4) { 16412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Message-ID 0x%08x (%u)", 16422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 16432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr), 16442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr)); 16452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 16462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 16472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 16482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 16492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 16502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 16512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 16522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 16532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_INTEGRITY: 16552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 16562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 16572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < sizeof(struct rsvp_obj_integrity_t)) 16582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 16592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_ptr.rsvp_obj_integrity = (const struct rsvp_obj_integrity_t *)obj_tptr; 16602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Key-ID 0x%04x%08x, Sequence 0x%08x%08x, Flags [%s]", 16612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 16622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(obj_ptr.rsvp_obj_integrity->key_id), 16632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->key_id+2), 16642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->sequence), 16652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->sequence+4), 16662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bittok2str(rsvp_obj_integrity_flag_values, 16672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "none", 16682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_ptr.rsvp_obj_integrity->flags)); 166953f17a9db278d33517d9888dd77848f554522a38JP Abgrall printf("%s MD5-sum 0x%08x%08x%08x%08x ", 16702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ident, 16712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->digest), 16722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->digest+4), 16732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->digest+8), 16742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->digest+12)); 167553f17a9db278d33517d9888dd77848f554522a38JP Abgrall 167653f17a9db278d33517d9888dd77848f554522a38JP Abgrall#ifdef HAVE_LIBCRYPTO 167753f17a9db278d33517d9888dd77848f554522a38JP Abgrall sigcheck = signature_verify(pptr, plen, (unsigned char *)obj_ptr.\ 167853f17a9db278d33517d9888dd77848f554522a38JP Abgrall rsvp_obj_integrity->digest); 167953f17a9db278d33517d9888dd77848f554522a38JP Abgrall#else 168053f17a9db278d33517d9888dd77848f554522a38JP Abgrall sigcheck = CANT_CHECK_SIGNATURE; 168153f17a9db278d33517d9888dd77848f554522a38JP Abgrall#endif 168253f17a9db278d33517d9888dd77848f554522a38JP Abgrall printf(" (%s)", tok2str(signature_check_values, "Unknown", sigcheck)); 168353f17a9db278d33517d9888dd77848f554522a38JP Abgrall 16842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen+=sizeof(struct rsvp_obj_integrity_t); 16852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=sizeof(struct rsvp_obj_integrity_t); 16862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 16872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 16882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 16892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 16902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 16912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 16922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ADMIN_STATUS: 16932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 16942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 16952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 16962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 16972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Flags [%s]", ident, 16982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bittok2str(rsvp_obj_admin_status_flag_values, "none", 16992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr))); 17002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 17012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 17022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 17032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 17042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 17052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 17062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 17072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_LABEL_SET: 17092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_obj_ctype) { 17102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_CTYPE_1: 17112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 4) 17122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return-1; 17132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project action = (EXTRACT_16BITS(obj_tptr)>>8); 17142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Action: %s (%u), Label type: %u", ident, 17162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_obj_label_set_action_values, "Unknown", action), 17172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project action, ((EXTRACT_32BITS(obj_tptr) & 0x7F))); 17182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch (action) { 17202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LABEL_SET_INCLUSIVE_RANGE: 17212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LABEL_SET_EXCLUSIVE_RANGE: /* fall through */ 17222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* only a couple of subchannels are expected */ 17242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (obj_tlen < 12) 17252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 17262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Start range: %u, End range: %u", ident, 17272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+4), 17282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr+8)); 17292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=12; 17302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=12; 17312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 17322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 17342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 17352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 17362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subchannel = 1; 17372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(obj_tlen >= 4 ) { 17382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s Subchannel #%u: %u", ident, subchannel, 17392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(obj_tptr)); 17402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tptr+=4; 17412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project obj_tlen-=4; 17422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subchannel++; 17432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 17442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 17452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 17462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 174753f17a9db278d33517d9888dd77848f554522a38JP Abgrall default: 174853f17a9db278d33517d9888dd77848f554522a38JP Abgrall hexdump=TRUE; 174953f17a9db278d33517d9888dd77848f554522a38JP Abgrall } 17502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 175153f17a9db278d33517d9888dd77848f554522a38JP Abgrall case RSVP_OBJ_S2L: 175253f17a9db278d33517d9888dd77848f554522a38JP Abgrall switch (rsvp_obj_ctype) { 175353f17a9db278d33517d9888dd77848f554522a38JP Abgrall case RSVP_CTYPE_IPV4: 175453f17a9db278d33517d9888dd77848f554522a38JP Abgrall if (obj_tlen < 4) 175553f17a9db278d33517d9888dd77848f554522a38JP Abgrall return-1; 175653f17a9db278d33517d9888dd77848f554522a38JP Abgrall printf("%s Sub-LSP destination address: %s", 175753f17a9db278d33517d9888dd77848f554522a38JP Abgrall ident, ipaddr_string(obj_tptr)); 175853f17a9db278d33517d9888dd77848f554522a38JP Abgrall 175953f17a9db278d33517d9888dd77848f554522a38JP Abgrall obj_tlen-=4; 176053f17a9db278d33517d9888dd77848f554522a38JP Abgrall obj_tptr+=4; 176153f17a9db278d33517d9888dd77848f554522a38JP Abgrall break; 176253f17a9db278d33517d9888dd77848f554522a38JP Abgrall#ifdef INET6 176353f17a9db278d33517d9888dd77848f554522a38JP Abgrall case RSVP_CTYPE_IPV6: 176453f17a9db278d33517d9888dd77848f554522a38JP Abgrall if (obj_tlen < 16) 176553f17a9db278d33517d9888dd77848f554522a38JP Abgrall return-1; 176653f17a9db278d33517d9888dd77848f554522a38JP Abgrall printf("%s Sub-LSP destination address: %s", 176753f17a9db278d33517d9888dd77848f554522a38JP Abgrall ident, ip6addr_string(obj_tptr)); 176853f17a9db278d33517d9888dd77848f554522a38JP Abgrall 176953f17a9db278d33517d9888dd77848f554522a38JP Abgrall obj_tlen-=16; 177053f17a9db278d33517d9888dd77848f554522a38JP Abgrall obj_tptr+=16; 177153f17a9db278d33517d9888dd77848f554522a38JP Abgrall break; 177253f17a9db278d33517d9888dd77848f554522a38JP Abgrall#endif 17732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 17742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hexdump=TRUE; 17752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 17762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 17782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * FIXME those are the defined objects that lack a decoder 17792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * you are welcome to contribute code ;-) 17802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 17812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_SCOPE: 17832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_POLICY_DATA: 17842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_ACCEPT_LABEL_SET: 17852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_OBJ_PROTECTION: 17862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 17872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (vflag <= 1) 17882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project print_unknown_data(obj_tptr,"\n\t ",obj_tlen); /* FIXME indentation */ 17892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 17902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 17912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* do we also want to see a hex dump ? */ 17922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (vflag > 1 || hexdump==TRUE) 179353f17a9db278d33517d9888dd77848f554522a38JP Abgrall print_unknown_data(tptr+sizeof(struct rsvp_object_header),"\n\t ", /* FIXME indentation */ 17942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_obj_len-sizeof(struct rsvp_object_header)); 17952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 17962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tptr+=rsvp_obj_len; 17972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlen-=rsvp_obj_len; 17982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 17992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return 0; 18002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc: 18012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\t packet exceeded snapshot"); 18022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return -1; 18032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project} 18042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 18052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 18062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectvoid 18072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectrsvp_print(register const u_char *pptr, register u_int len) { 18082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 180953f17a9db278d33517d9888dd77848f554522a38JP Abgrall struct rsvp_common_header *rsvp_com_header; 18102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const u_char *tptr,*subtptr; 181153f17a9db278d33517d9888dd77848f554522a38JP Abgrall u_short plen, tlen, subtlen; 18122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 18132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tptr=pptr; 18142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 181553f17a9db278d33517d9888dd77848f554522a38JP Abgrall rsvp_com_header = (struct rsvp_common_header *)pptr; 18162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project TCHECK(*rsvp_com_header); 18172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 18182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 18192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Sanity checking of the header. 18202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 18212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags) != RSVP_VERSION) { 18222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("ERROR: RSVP version %u packet not supported", 18232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags)); 18242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 18252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 18262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 18272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* in non-verbose mode just lets print the basic Message Type*/ 18282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (vflag < 1) { 18292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("RSVPv%u %s Message, length: %u", 18302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags), 18312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_msg_type_values, "unknown (%u)",rsvp_com_header->msg_type), 18322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project len); 18332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 18342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 18352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 18362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* ok they seem to want to know everything - lets fully decode it */ 18372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 183853f17a9db278d33517d9888dd77848f554522a38JP Abgrall plen = tlen = EXTRACT_16BITS(rsvp_com_header->length); 18392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 18402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\tRSVPv%u %s Message (%u), Flags: [%s], length: %u, ttl: %u, checksum: 0x%04x", 18412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags), 18422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_msg_type_values, "unknown, type: %u",rsvp_com_header->msg_type), 18432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_com_header->msg_type, 18442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bittok2str(rsvp_header_flag_values,"none",RSVP_EXTRACT_FLAGS(rsvp_com_header->version_flags)), 18452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlen, 18462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_com_header->ttl, 18472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(rsvp_com_header->checksum)); 18482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 184953f17a9db278d33517d9888dd77848f554522a38JP Abgrall /* 185053f17a9db278d33517d9888dd77848f554522a38JP Abgrall * Clear checksum prior to signature verification. 185153f17a9db278d33517d9888dd77848f554522a38JP Abgrall */ 185253f17a9db278d33517d9888dd77848f554522a38JP Abgrall rsvp_com_header->checksum[0] = 0; 185353f17a9db278d33517d9888dd77848f554522a38JP Abgrall rsvp_com_header->checksum[1] = 0; 185453f17a9db278d33517d9888dd77848f554522a38JP Abgrall 18552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (tlen < sizeof(const struct rsvp_common_header)) { 18562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("ERROR: common header too short %u < %lu", tlen, 18572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (unsigned long)sizeof(const struct rsvp_common_header)); 18582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 18592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 18602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 18612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tptr+=sizeof(const struct rsvp_common_header); 18622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlen-=sizeof(const struct rsvp_common_header); 18632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 18642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(rsvp_com_header->msg_type) { 18652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 18662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_AGGREGATE: 18672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(tlen > 0) { 18682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtptr=tptr; 186953f17a9db278d33517d9888dd77848f554522a38JP Abgrall rsvp_com_header = (struct rsvp_common_header *)subtptr; 18702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project TCHECK(*rsvp_com_header); 18712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 18722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 18732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Sanity checking of the header. 18742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 18752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags) != RSVP_VERSION) { 18762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("ERROR: RSVP version %u packet not supported", 18772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags)); 18782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 18792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 18802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlen=EXTRACT_16BITS(rsvp_com_header->length); 18812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 18822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t RSVPv%u %s Message (%u), Flags: [%s], length: %u, ttl: %u, checksum: 0x%04x", 18832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags), 18842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(rsvp_msg_type_values, "unknown, type: %u",rsvp_com_header->msg_type), 18852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_com_header->msg_type, 18862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bittok2str(rsvp_header_flag_values,"none",RSVP_EXTRACT_FLAGS(rsvp_com_header->version_flags)), 18872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlen, 18882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project rsvp_com_header->ttl, 18892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(rsvp_com_header->checksum)); 189053f17a9db278d33517d9888dd77848f554522a38JP Abgrall 189153f17a9db278d33517d9888dd77848f554522a38JP Abgrall /* 189253f17a9db278d33517d9888dd77848f554522a38JP Abgrall * Clear checksum prior to signature verification. 189353f17a9db278d33517d9888dd77848f554522a38JP Abgrall */ 189453f17a9db278d33517d9888dd77848f554522a38JP Abgrall rsvp_com_header->checksum[0] = 0; 189553f17a9db278d33517d9888dd77848f554522a38JP Abgrall rsvp_com_header->checksum[1] = 0; 18962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 18972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (subtlen < sizeof(const struct rsvp_common_header)) { 18982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("ERROR: common header too short %u < %lu", subtlen, 18992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (unsigned long)sizeof(const struct rsvp_common_header)); 19002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 19012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 19022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 19032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (tlen < subtlen) { 19042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("ERROR: common header too large %u > %u", subtlen, 19052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlen); 19062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 19072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 19082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 19092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtptr+=sizeof(const struct rsvp_common_header); 19102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlen-=sizeof(const struct rsvp_common_header); 19112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 191253f17a9db278d33517d9888dd77848f554522a38JP Abgrall if (rsvp_obj_print(pptr, plen, subtptr,"\n\t ", subtlen) == -1) 19132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 19142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 19152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tptr+=subtlen+sizeof(const struct rsvp_common_header); 19162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlen-=subtlen+sizeof(const struct rsvp_common_header); 19172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 19182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 19192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 19202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 19212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_PATH: 19222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_RESV: 19232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_PATHERR: 19242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_RESVERR: 19252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_PATHTEAR: 19262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_RESVTEAR: 19272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_RESVCONF: 19282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_HELLO_OLD: 19292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_HELLO: 19302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_ACK: 19312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case RSVP_MSGTYPE_SREFRESH: 193253f17a9db278d33517d9888dd77848f554522a38JP Abgrall if (rsvp_obj_print(pptr, plen, tptr,"\n\t ", tlen) == -1) 19332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 19342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 19352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 19362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 19372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project print_unknown_data(tptr,"\n\t ",tlen); 19382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 19392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 19402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 19412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 19422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc: 19432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\t packet exceeded snapshot"); 19442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project} 1945