12949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Redistribution and use in source and binary forms, with or without 32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * modification, are permitted provided that: (1) source code 42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * distributions retain the above copyright notice and this paragraph 52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * in its entirety, and (2) distributions including binary code include 62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * the above copyright notice and this paragraph in its entirety in 72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * the documentation or other materials provided with the distribution. 82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * THIS SOFTWARE IS PROVIDED ``AS IS'' AND 92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT 102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * FOR A PARTICULAR PURPOSE. 122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Original code by Hannes Gredler (hannes@juniper.net) 142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef lint 172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const char rcsid[] _U_ = 182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "@(#) $Header: /tcpdump/master/tcpdump/print-lspping.c,v 1.12.2.6 2006/06/23 02:07:27 hannes Exp $"; 192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef HAVE_CONFIG_H 222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "config.h" 232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <tcpdump-stdinc.h> 262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <stdio.h> 282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <stdlib.h> 292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <string.h> 302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "interface.h" 322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "extract.h" 332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "addrtoname.h" 342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "bgp.h" 362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "l2vpn.h" 372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * LSPPING common header 402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Version Number | Must Be Zero | 452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Message Type | Reply mode | Return Code | Return Subcode| 472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Sender's Handle | 492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Sequence Number | 512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | TimeStamp Sent (seconds) | 532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | TimeStamp Sent (microseconds) | 552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | TimeStamp Received (seconds) | 572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | TimeStamp Received (microseconds) | 592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | TLVs ... | 612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * . . 622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * . . 632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * . . 642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lspping_common_header { 672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t version[2]; 682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t reserved[2]; 692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t msg_type; 702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t reply_mode; 712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t return_code; 722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t return_subcode; 732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t sender_handle[4]; 742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t seq_number[4]; 752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t ts_sent_sec[4]; 762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t ts_sent_usec[4]; 772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t ts_rcvd_sec[4]; 782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t ts_rcvd_usec[4]; 792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_VERSION 1 822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok lspping_msg_type_values[] = { 842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 1, "MPLS Echo Request"}, 852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 2, "MPLS Echo Reply"}, 862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok lspping_reply_mode_values[] = { 902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 1, "Do not reply"}, 912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 2, "Reply via an IPv4/IPv6 UDP packet"}, 922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 3, "Reply via an IPv4/IPv6 UDP packet with Router Alert"}, 932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 4, "Reply via application level control channel"}, 942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok lspping_return_code_values[] = { 982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, "No return code or return code contained in the Error Code TLV"}, 992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 1, "Malformed echo request received"}, 1002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 2, "One or more of the TLVs was not understood"}, 1012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 3, "Replying router is an egress for the FEC at stack depth"}, 1022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 4, "Replying router has no mapping for the FEC at stack depth"}, 1032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 5, "Reserved"}, 1042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 6, "Reserved"}, 1052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 7, "Reserved"}, 1062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 8, "Label switched at stack-depth"}, 1072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 9, "Label switched but no MPLS forwarding at stack-depth"}, 1082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 10, "Mapping for this FEC is not the given label at stack depth"}, 1092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 11, "No label entry at stack-depth"}, 1102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 12, "Protocol not associated with interface at FEC stack depth"}, 1112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 1122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 1152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * LSPPING TLV header 1162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 1172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Type | Length | 1202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Value | 1222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * . . 1232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * . . 1242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * . . 1252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 1262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 1282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lspping_tlv_header { 1302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t type[2]; 1312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t length[2]; 1322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 1332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_TARGET_FEC_STACK 1 1352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_DOWNSTREAM_MAPPING 2 1362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_PAD 3 1372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_ERROR_CODE 4 1382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_BFD_DISCRIMINATOR 15 /* draft-ietf-bfd-mpls-02 */ 1392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_BFD_DISCRIMINATOR_LEN 4 1402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_VENDOR_PRIVATE 0xfc00 1412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok lspping_tlv_values[] = { 1432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_TARGET_FEC_STACK, "Target FEC Stack" }, 1442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_DOWNSTREAM_MAPPING, "Downstream Mapping" }, 1452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_PAD, "Pad" }, 1462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_ERROR_CODE, "Error Code" }, 1472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_BFD_DISCRIMINATOR, "BFD Discriminator" }, 1482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_VENDOR_PRIVATE, "Vendor Enterprise Code" }, 1492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 1502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 1512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_TARGETFEC_SUBTLV_LDP_IPV4 1 1532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_TARGETFEC_SUBTLV_LDP_IPV6 2 1542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_TARGETFEC_SUBTLV_RSVP_IPV4 3 1552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_TARGETFEC_SUBTLV_RSVP_IPV6 4 1562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_TARGETFEC_SUBTLV_L3VPN_IPV4 6 1572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_TARGETFEC_SUBTLV_L3VPN_IPV6 7 1582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_ENDPT 8 1592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_VCID_OLD 9 1602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_VCID 10 1612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_TARGETFEC_SUBTLV_BGP_IPV4 11 1622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_TLV_TARGETFEC_SUBTLV_BGP_IPV6 12 1632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok lspping_tlvtargetfec_subtlv_values[] = { 1652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_TARGETFEC_SUBTLV_LDP_IPV4, "LDP IPv4 prefix"}, 1662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_TARGETFEC_SUBTLV_LDP_IPV6, "LDP IPv6 prefix"}, 1672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_TARGETFEC_SUBTLV_RSVP_IPV4, "RSVP IPv4 Session Query"}, 1682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_TARGETFEC_SUBTLV_RSVP_IPV6, "RSVP IPv6 Session Query"}, 1692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 5, "Reserved"}, 1702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_TARGETFEC_SUBTLV_L3VPN_IPV4, "VPN IPv4 prefix"}, 1712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_TARGETFEC_SUBTLV_L3VPN_IPV6, "VPN IPv6 prefix"}, 1722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_ENDPT, "L2 VPN endpoint"}, 1732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_VCID_OLD, "L2 circuit ID (old)"}, 1742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_VCID, "L2 circuit ID"}, 1752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_TARGETFEC_SUBTLV_BGP_IPV4, "BGP labeled IPv4 prefix"}, 1762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_TLV_TARGETFEC_SUBTLV_BGP_IPV6, "BGP labeled IPv6 prefix"}, 1772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 1782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 1792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 1812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 1822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | IPv4 prefix | 1852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Prefix Length | Must Be Zero | 1872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 1892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lspping_tlv_targetfec_subtlv_ldp_ipv4_t { 1902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t prefix [4]; 1912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t prefix_len; 1922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 1932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 1952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 1962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | IPv6 prefix | 1992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | (16 octets) | 2002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 2012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 2022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Prefix Length | Must Be Zero | 2042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 2062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lspping_tlv_targetfec_subtlv_ldp_ipv6_t { 2072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t prefix [16]; 2082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t prefix_len; 2092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 2102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 2112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 2122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Sender identifier | 2152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | IPv4 prefix | 2172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Prefix Length | Must Be Zero | 2192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 2212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lspping_tlv_targetfec_subtlv_bgp_ipv4_t { 2222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t sender_id [4]; 2232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t prefix [4]; 2242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t prefix_len; 2252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 2262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 2272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 2282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Sender identifier | 2312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | (16 octets) | 2322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 2332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 2342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | IPv6 prefix | 2362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | (16 octets) | 2372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 2382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 2392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Prefix Length | Must Be Zero | 2412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 2432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lspping_tlv_targetfec_subtlv_bgp_ipv6_t { 2442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t sender_id [16]; 2452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t prefix [16]; 2462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t prefix_len; 2472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 2482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 2492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 2502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 2512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | IPv4 tunnel end point address | 2542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Must Be Zero | Tunnel ID | 2562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Extended Tunnel ID | 2582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | IPv4 tunnel sender address | 2602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Must Be Zero | LSP ID | 2622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 2642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lspping_tlv_targetfec_subtlv_rsvp_ipv4_t { 2652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t tunnel_endpoint [4]; 2662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t res[2]; 2672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t tunnel_id[2]; 2682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t extended_tunnel_id[4]; 2692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t tunnel_sender [4]; 2702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t res2[2]; 2712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t lsp_id [2]; 2722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 2732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 2742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 2752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 2762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | IPv6 tunnel end point address | 2792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 2802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 2812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 2822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Must Be Zero | Tunnel ID | 2842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Extended Tunnel ID | 2862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 2872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 2882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 2892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | IPv6 tunnel sender address | 2912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 2922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 2932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 2942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Must Be Zero | LSP ID | 2962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 2982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lspping_tlv_targetfec_subtlv_rsvp_ipv6_t { 2992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t tunnel_endpoint [16]; 3002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t res[2]; 3012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t tunnel_id[2]; 3022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t extended_tunnel_id[16]; 3032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t tunnel_sender [16]; 3042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t res2[2]; 3052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t lsp_id [2]; 3062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 3102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 3112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Route Distinguisher | 3132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | (8 octets) | 3142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | IPv4 prefix | 3162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Prefix Length | Must Be Zero | 3182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 3202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lspping_tlv_targetfec_subtlv_l3vpn_ipv4_t { 3212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t rd [8]; 3222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t prefix [4]; 3232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t prefix_len; 3242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 3282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 3292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Route Distinguisher | 3312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | (8 octets) | 3322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | IPv6 prefix | 3342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | (16 octets) | 3352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 3362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | | 3372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Prefix Length | Must Be Zero | 3392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 3412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lspping_tlv_targetfec_subtlv_l3vpn_ipv6_t { 3422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t rd [8]; 3432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t prefix [16]; 3442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t prefix_len; 3452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 3492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 3502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Route Distinguisher | 3522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | (8 octets) | 3532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Sender's CE ID | Receiver's CE ID | 3552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Encapsulation Type | Must Be Zero | 3572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 3592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 3602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lspping_tlv_targetfec_subtlv_l2vpn_endpt_t { 3612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t rd [8]; 3622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t sender_ce_id [2]; 3632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t receiver_ce_id [2]; 3642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t encapsulation[2]; 3652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 3692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Remote PE Address | 3712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | VC ID | 3732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Encapsulation Type | Must Be Zero | 3752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 3772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lspping_tlv_targetfec_subtlv_l2vpn_vcid_old_t { 3782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t remote_pe_address [4]; 3792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t vc_id [4]; 3802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t encapsulation[2]; 3812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 3822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 3832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 3852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Sender's PE Address | 3872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Remote PE Address | 3892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | VC ID | 3912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Encapsulation Type | Must Be Zero | 3932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 3952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lspping_tlv_targetfec_subtlv_l2vpn_vcid_t { 3962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t sender_pe_address [4]; 3972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t remote_pe_address [4]; 3982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t vc_id [4]; 3992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t encapsulation[2]; 4002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 4032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 4042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 4052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | MTU | Address Type | Resvd (SBZ) | 4072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Downstream IP Address (4 or 16 octets) | 4092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Downstream Interface Address (4 or 16 octets) | 4112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Hash Key Type | Depth Limit | Multipath Length | 4132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * . . 4152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * . (Multipath Information) . 4162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * . . 4172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Downstream Label | Protocol | 4192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * . . 4212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * . . 4222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * . . 4232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * | Downstream Label | Protocol | 4252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 4272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lspping_tlv_downstream_map_ipv4_t { 4282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t mtu [2]; 4292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t address_type; 4302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t res; 4312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t downstream_ip[4]; 4322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t downstream_interface[4]; 4332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lspping_tlv_downstream_map_ipv6_t { 4362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t mtu [2]; 4372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t address_type; 4382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t res; 4392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t downstream_ip[16]; 4402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t downstream_interface[16]; 4412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct lspping_tlv_downstream_map_info_t { 4442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t hash_key_type; 4452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t depth_limit; 4462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t multipath_length [2]; 4472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_AFI_IPV4 1 4502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_AFI_UNMB 2 4512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LSPPING_AFI_IPV6 3 4522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const struct tok lspping_tlv_downstream_addr_values[] = { 4542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_AFI_IPV4, "IPv4"}, 4552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_AFI_IPV6, "IPv6"}, 4562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { LSPPING_AFI_UNMB, "Unnumbered"}, 4572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 0, NULL} 4582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 4592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectvoid 4612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectlspping_print(register const u_char *pptr, register u_int len) { 4622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_common_header *lspping_com_header; 4642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_tlv_header *lspping_tlv_header; 4652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_tlv_header *lspping_subtlv_header; 4662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const u_char *tptr,*tlv_tptr,*subtlv_tptr; 4672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project int tlen,lspping_tlv_len,lspping_tlv_type,tlv_tlen; 4682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project int tlv_hexdump,subtlv_hexdump; 4692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project int lspping_subtlv_len,lspping_subtlv_type; 4702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project struct timeval timestamp; 4712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project union { 4732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_tlv_downstream_map_ipv4_t *lspping_tlv_downstream_map_ipv4; 4742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_tlv_downstream_map_ipv6_t *lspping_tlv_downstream_map_ipv6; 4752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_tlv_downstream_map_info_t *lspping_tlv_downstream_map_info; 4762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } tlv_ptr; 4772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project union { 4792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_tlv_targetfec_subtlv_ldp_ipv4_t *lspping_tlv_targetfec_subtlv_ldp_ipv4; 4802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_tlv_targetfec_subtlv_ldp_ipv6_t *lspping_tlv_targetfec_subtlv_ldp_ipv6; 4812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_tlv_targetfec_subtlv_rsvp_ipv4_t *lspping_tlv_targetfec_subtlv_rsvp_ipv4; 4822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_tlv_targetfec_subtlv_rsvp_ipv6_t *lspping_tlv_targetfec_subtlv_rsvp_ipv6; 4832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_tlv_targetfec_subtlv_l3vpn_ipv4_t *lspping_tlv_targetfec_subtlv_l3vpn_ipv4; 4842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_tlv_targetfec_subtlv_l3vpn_ipv6_t *lspping_tlv_targetfec_subtlv_l3vpn_ipv6; 4852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_tlv_targetfec_subtlv_l2vpn_endpt_t *lspping_tlv_targetfec_subtlv_l2vpn_endpt; 4862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_tlv_targetfec_subtlv_l2vpn_vcid_old_t *lspping_tlv_targetfec_subtlv_l2vpn_vcid_old; 4872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_tlv_targetfec_subtlv_l2vpn_vcid_t *lspping_tlv_targetfec_subtlv_l2vpn_vcid; 4882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_tlv_targetfec_subtlv_bgp_ipv4_t *lspping_tlv_targetfec_subtlv_bgp_ipv4; 4892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct lspping_tlv_targetfec_subtlv_bgp_ipv6_t *lspping_tlv_targetfec_subtlv_bgp_ipv6; 4902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } subtlv_ptr; 4912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tptr=pptr; 4932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_com_header = (const struct lspping_common_header *)pptr; 4942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project TCHECK(*lspping_com_header); 4952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 4962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 4972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Sanity checking of the header. 4982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 4992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (EXTRACT_16BITS(&lspping_com_header->version[0]) != LSPPING_VERSION) { 5002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("LSP-PING version %u packet not supported", 5012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(&lspping_com_header->version[0])); 5022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 5032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 5042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* in non-verbose mode just lets print the basic Message Type*/ 5062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (vflag < 1) { 5072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("LSP-PINGv%u, %s, seq %u, length: %u", 5082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(&lspping_com_header->version[0]), 5092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(lspping_msg_type_values, "unknown (%u)",lspping_com_header->msg_type), 5102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(lspping_com_header->seq_number), 5112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project len); 5122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 5132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 5142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* ok they seem to want to know everything - lets fully decode it */ 5162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlen=len; 5182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\tLSP-PINGv%u, msg-type: %s (%u), length: %u\n\t reply-mode: %s (%u)", 5202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(&lspping_com_header->version[0]), 5212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(lspping_msg_type_values, "unknown",lspping_com_header->msg_type), 5222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_com_header->msg_type, 5232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project len, 5242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(lspping_reply_mode_values, "unknown",lspping_com_header->reply_mode), 5252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_com_header->reply_mode); 5262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 5282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * the following return codes require that the subcode is attached 5292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * at the end of the translated token output 5302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 5312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (lspping_com_header->return_code == 3 || 5322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_com_header->return_code == 4 || 5332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_com_header->return_code == 8 || 5342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_com_header->return_code == 10 || 5352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_com_header->return_code == 11 || 5362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_com_header->return_code == 12 ) 5372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t Return Code: %s %u (%u)\n\t Return Subcode: (%u)", 5382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(lspping_return_code_values, "unknown",lspping_com_header->return_code), 5392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_com_header->return_subcode, 5402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_com_header->return_code, 5412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_com_header->return_subcode); 5422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project else 5432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t Return Code: %s (%u)\n\t Return Subcode: (%u)", 5442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(lspping_return_code_values, "unknown",lspping_com_header->return_code), 5452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_com_header->return_code, 5462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_com_header->return_subcode); 5472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t Sender Handle: 0x%08x, Sequence: %u", 5492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(lspping_com_header->sender_handle), 5502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(lspping_com_header->seq_number)); 5512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project timestamp.tv_sec=EXTRACT_32BITS(lspping_com_header->ts_sent_sec); 5532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project timestamp.tv_usec=EXTRACT_32BITS(lspping_com_header->ts_sent_usec); 5542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t Sender Timestamp: "); 5552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ts_print(×tamp); 5562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project timestamp.tv_sec=EXTRACT_32BITS(lspping_com_header->ts_rcvd_sec); 5582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project timestamp.tv_usec=EXTRACT_32BITS(lspping_com_header->ts_rcvd_usec); 5592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("Receiver Timestamp: "); 5602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if ((timestamp.tv_sec != 0) && (timestamp.tv_usec != 0)) 5612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ts_print(×tamp); 5622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project else 5632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("no timestamp"); 5642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tptr+=sizeof(const struct lspping_common_header); 5662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlen-=sizeof(const struct lspping_common_header); 5672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(tlen>(int)sizeof(struct lspping_tlv_header)) { 5692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* did we capture enough for fully decoding the tlv header ? */ 5702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (!TTEST2(*tptr, sizeof(struct lspping_tlv_header))) 5712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project goto trunc; 5722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_tlv_header = (const struct lspping_tlv_header *)tptr; 5742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_tlv_type=EXTRACT_16BITS(lspping_tlv_header->type); 5752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_tlv_len=EXTRACT_16BITS(lspping_tlv_header->length); 5762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (lspping_tlv_len == 0) 5782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 5792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if(lspping_tlv_len % 4 || lspping_tlv_len < 4) { /* aligned to four octet boundary */ 5812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t ERROR: TLV %u bogus size %u",lspping_tlv_type,lspping_tlv_len); 5822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 5832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 5842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t %s TLV (%u), length: %u", 5862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(lspping_tlv_values, 5872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown", 5882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_tlv_type), 5892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_tlv_type, 5902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_tlv_len); 5912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_tptr=tptr+sizeof(struct lspping_tlv_header); 5932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_tlen=lspping_tlv_len; /* header not included -> no adjustment */ 5942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 5952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* did we capture enough for fully decoding the tlv ? */ 5962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (!TTEST2(*tptr, lspping_tlv_len)) 5972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project goto trunc; 5982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_hexdump=FALSE; 5992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(lspping_tlv_type) { 6012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_TARGET_FEC_STACK: 6022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while(tlv_tlen>(int)sizeof(struct lspping_tlv_header)) { 6032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* did we capture enough for fully decoding the subtlv header ? */ 6052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (!TTEST2(*tptr, sizeof(struct lspping_tlv_header))) 6062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project goto trunc; 6072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_hexdump=FALSE; 6082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_subtlv_header = (const struct lspping_tlv_header *)tlv_tptr; 6102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_subtlv_type=EXTRACT_16BITS(lspping_subtlv_header->type); 6112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_subtlv_len=EXTRACT_16BITS(lspping_subtlv_header->length); 6122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_tptr=tlv_tptr+sizeof(struct lspping_tlv_header); 6132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (lspping_subtlv_len == 0) 6152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 6162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t %s subTLV (%u), length: %u", 6182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(lspping_tlvtargetfec_subtlv_values, 6192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "Unknown", 6202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_subtlv_type), 6212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_subtlv_type, 6222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_subtlv_len); 6232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(lspping_subtlv_type) { 6252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_TARGETFEC_SUBTLV_LDP_IPV4: 6272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_ldp_ipv4 = \ 6282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (const struct lspping_tlv_targetfec_subtlv_ldp_ipv4_t *)subtlv_tptr; 6292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t %s/%u", 6302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_ldp_ipv4->prefix), 6312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_ldp_ipv4->prefix_len); 6322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 6332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 6352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_TARGETFEC_SUBTLV_LDP_IPV6: 6362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_ldp_ipv6 = \ 6372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (const struct lspping_tlv_targetfec_subtlv_ldp_ipv6_t *)subtlv_tptr; 6382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t %s/%u", 6392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_ldp_ipv6->prefix), 6402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_ldp_ipv6->prefix_len); 6412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 6422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 6432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_TARGETFEC_SUBTLV_BGP_IPV4: 6452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_bgp_ipv4 = \ 6462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (const struct lspping_tlv_targetfec_subtlv_bgp_ipv4_t *)subtlv_tptr; 6472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t %s/%u, sender-id %s", 6482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_bgp_ipv4->prefix), 6492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_bgp_ipv4->prefix_len, 6502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_bgp_ipv4->sender_id)); 6512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 6522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 6542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_TARGETFEC_SUBTLV_BGP_IPV6: 6552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_bgp_ipv6 = \ 6562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (const struct lspping_tlv_targetfec_subtlv_bgp_ipv6_t *)subtlv_tptr; 6572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t %s/%u, sender-id %s", 6582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_bgp_ipv6->prefix), 6592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_bgp_ipv6->prefix_len, 6602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_bgp_ipv6->sender_id)); 6612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 6622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 6632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_TARGETFEC_SUBTLV_RSVP_IPV4: 6652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv4 = \ 6662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (const struct lspping_tlv_targetfec_subtlv_rsvp_ipv4_t *)subtlv_tptr; 6672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t tunnel end-point %s, tunnel sender %s, lsp-id 0x%04x" \ 6682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "\n\t tunnel-id 0x%04x, extended tunnel-id %s", 6692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv4->tunnel_endpoint), 6702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv4->tunnel_sender), 6712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv4->lsp_id), 6722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv4->tunnel_id), 6732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv4->extended_tunnel_id)); 6742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 6752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 6772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_TARGETFEC_SUBTLV_RSVP_IPV6: 6782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv6 = \ 6792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (const struct lspping_tlv_targetfec_subtlv_rsvp_ipv6_t *)subtlv_tptr; 6802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t tunnel end-point %s, tunnel sender %s, lsp-id 0x%04x" \ 6812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "\n\t tunnel-id 0x%04x, extended tunnel-id %s", 6822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv6->tunnel_endpoint), 6832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv6->tunnel_sender), 6842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv6->lsp_id), 6852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv6->tunnel_id), 6862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv6->extended_tunnel_id)); 6872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 6882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 6892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_TARGETFEC_SUBTLV_L3VPN_IPV4: 6912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_l3vpn_ipv4 = \ 6922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (const struct lspping_tlv_targetfec_subtlv_l3vpn_ipv4_t *)subtlv_tptr; 6932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t RD: %s, %s/%u", 6942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bgp_vpn_rd_print(subtlv_ptr.lspping_tlv_targetfec_subtlv_l3vpn_ipv4->rd), 6952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_l3vpn_ipv4->prefix), 6962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_l3vpn_ipv4->prefix_len); 6972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 6982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 6992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 7002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_TARGETFEC_SUBTLV_L3VPN_IPV6: 7012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_l3vpn_ipv6 = \ 7022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (const struct lspping_tlv_targetfec_subtlv_l3vpn_ipv6_t *)subtlv_tptr; 7032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t RD: %s, %s/%u", 7042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bgp_vpn_rd_print(subtlv_ptr.lspping_tlv_targetfec_subtlv_l3vpn_ipv6->rd), 7052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_l3vpn_ipv6->prefix), 7062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_l3vpn_ipv6->prefix_len); 7072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 7092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_ENDPT: 7112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_endpt = \ 7122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (const struct lspping_tlv_targetfec_subtlv_l2vpn_endpt_t *)subtlv_tptr; 7132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t RD: %s, Sender CE-ID: %u, Receiver CE-ID: %u" \ 7142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "\n\t Encapsulation Type: %s (%u)", 7152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project bgp_vpn_rd_print(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_endpt->rd), 7162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_endpt->sender_ce_id), 7172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_endpt->receiver_ce_id), 7182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(l2vpn_encaps_values, 7192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "unknown", 7202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_endpt->encapsulation)), 7212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_endpt->encapsulation)); 7222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* the old L2VPN VCID subTLV does not have support for the sender field */ 7262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_VCID_OLD: 7272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid_old = \ 7282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (const struct lspping_tlv_targetfec_subtlv_l2vpn_vcid_old_t *)subtlv_tptr; 7292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t Remote PE: %s" \ 7302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "\n\t VC-ID: 0x%08x, Encapsulation Type: %s (%u)", 7312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid_old->remote_pe_address), 7322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid_old->vc_id), 7332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(l2vpn_encaps_values, 7342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "unknown", 7352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid_old->encapsulation)), 7362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid_old->encapsulation)); 7372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_VCID: 7412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid = \ 7422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (const struct lspping_tlv_targetfec_subtlv_l2vpn_vcid_t *)subtlv_tptr; 7432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t Sender PE: %s, Remote PE: %s" \ 7442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "\n\t VC-ID: 0x%08x, Encapsulation Type: %s (%u)", 7452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid->sender_pe_address), 7462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid->remote_pe_address), 7472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid->vc_id), 7482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(l2vpn_encaps_values, 7492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "unknown", 7502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid->encapsulation)), 7512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid->encapsulation)); 7522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 7562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project subtlv_hexdump=TRUE; /* unknown subTLV just hexdump it */ 7572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 7592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* do we want to see an additionally subtlv hexdump ? */ 7602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (vflag > 1 || subtlv_hexdump==TRUE) 7612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project print_unknown_data(tlv_tptr+sizeof(struct lspping_tlv_header), \ 7622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "\n\t ", 7632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_subtlv_len); 7642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_tptr+=lspping_subtlv_len; 7662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_tlen-=lspping_subtlv_len+sizeof(struct lspping_tlv_header); 7672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 7682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_DOWNSTREAM_MAPPING: 7712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* that strange thing with the downstream map TLV is that until now 7722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * we do not know if its IPv4 or IPv6 , after we found the adress-type 7732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * lets recast the tlv_tptr and move on */ 7742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_ptr.lspping_tlv_downstream_map_ipv4= \ 7762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (const struct lspping_tlv_downstream_map_ipv4_t *)tlv_tptr; 7772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_ptr.lspping_tlv_downstream_map_ipv6= \ 7782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (const struct lspping_tlv_downstream_map_ipv6_t *)tlv_tptr; 7792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t MTU: %u, Address-Type: %s (%u)", 7802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_16BITS(tlv_ptr.lspping_tlv_downstream_map_ipv4->mtu), 7812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tok2str(lspping_tlv_downstream_addr_values, 7822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "unknown", 7832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_ptr.lspping_tlv_downstream_map_ipv4->address_type), 7842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_ptr.lspping_tlv_downstream_map_ipv4->address_type); 7852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project switch(tlv_ptr.lspping_tlv_downstream_map_ipv4->address_type) { 7872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 7882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_AFI_IPV4: 7892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t Downstream IP: %s" \ 7902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "\n\t Downstream Interface IP: %s", 7912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(tlv_ptr.lspping_tlv_downstream_map_ipv4->downstream_ip), 7922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(tlv_ptr.lspping_tlv_downstream_map_ipv4->downstream_interface)); 7932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_tptr+=sizeof(struct lspping_tlv_downstream_map_ipv4_t); 7942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_tlen-=sizeof(struct lspping_tlv_downstream_map_ipv4_t); 7952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 7962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 7972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_AFI_IPV6: 7982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t Downstream IP: %s" \ 7992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "\n\t Downstream Interface IP: %s", 8002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(tlv_ptr.lspping_tlv_downstream_map_ipv6->downstream_ip), 8012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip6addr_string(tlv_ptr.lspping_tlv_downstream_map_ipv6->downstream_interface)); 8022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_tptr+=sizeof(struct lspping_tlv_downstream_map_ipv6_t); 8032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_tlen-=sizeof(struct lspping_tlv_downstream_map_ipv6_t); 8042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 8062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_AFI_UNMB: 8072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t Downstream IP: %s" \ 8082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "\n\t Downstream Interface Index: 0x%08x", 8092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ipaddr_string(tlv_ptr.lspping_tlv_downstream_map_ipv4->downstream_ip), 8102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project EXTRACT_32BITS(tlv_ptr.lspping_tlv_downstream_map_ipv4->downstream_interface)); 8112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_tptr+=sizeof(struct lspping_tlv_downstream_map_ipv4_t); 8122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_tlen-=sizeof(struct lspping_tlv_downstream_map_ipv4_t); 8132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 8162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* should not happen ! - no error message - tok2str() has barked already */ 8172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 8192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_ptr.lspping_tlv_downstream_map_info= \ 8212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (const struct lspping_tlv_downstream_map_info_t *)tlv_tptr; 8222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* FIXME add hash-key type, depth limit, multipath processing */ 8242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_tptr+=sizeof(struct lspping_tlv_downstream_map_info_t); 8272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_tlen-=sizeof(struct lspping_tlv_downstream_map_info_t); 8282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* FIXME print downstream labels */ 8302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlv_hexdump=TRUE; /* dump the TLV until code complete */ 8332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_BFD_DISCRIMINATOR: 8372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tptr += sizeof(struct lspping_tlv_header); 8382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (!TTEST2(*tptr, LSPPING_TLV_BFD_DISCRIMINATOR_LEN)) 8392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project goto trunc; 8402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t BFD Discriminator 0x%08x", EXTRACT_32BITS(tptr)); 8412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* 8432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * FIXME those are the defined TLVs that lack a decoder 8442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * you are welcome to contribute code ;-) 8452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 8462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_PAD: 8482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_ERROR_CODE: 8492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project case LSPPING_TLV_VENDOR_PRIVATE: 8502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project default: 8522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (vflag <= 1) 8532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project print_unknown_data(tlv_tptr,"\n\t ",tlv_tlen); 8542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project break; 8552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 8562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* do we want to see an additionally tlv hexdump ? */ 8572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (vflag > 1 || tlv_hexdump==TRUE) 8582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project print_unknown_data(tptr+sizeof(sizeof(struct lspping_tlv_header)),"\n\t ", 8592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project lspping_tlv_len); 8602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 8612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tptr+=lspping_tlv_len+sizeof(struct lspping_tlv_header); 8622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project tlen-=lspping_tlv_len+sizeof(struct lspping_tlv_header); 8632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 8642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return; 8652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc: 8662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("\n\t\t packet exceeded snapshot"); 8672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project} 868