12949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Copyright (c) 1991, 1993, 1994, 1995, 1996, 1997
32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *      The Regents of the University of California.  All rights reserved.
42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Redistribution and use in source and binary forms, with or without
62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * modification, are permitted provided that: (1) source code distributions
72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * retain the above copyright notice and this paragraph in its entirety, (2)
82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * distributions including binary code include the above copyright notice and
92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * this paragraph in its entirety in the documentation or other materials
102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * provided with the distribution, and (3) all advertising materials mentioning
112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * features or use of this software display the following acknowledgement:
122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * ``This product includes software developed by the University of California,
132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * the University nor the names of its contributors may be used to endorse
152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * or promote products derived from this software without specific prior
162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * written permission.
172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * PPTP support contributed by Motonori Shindo (mshindo@mshindo.net)
222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef lint
262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const char rcsid[] _U_ =
2753f17a9db278d33517d9888dd77848f554522a38JP Abgrall     "@(#) $Header: /tcpdump/master/tcpdump/print-pptp.c,v 1.12 2006-06-23 02:03:09 hannes Exp $";
282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif
292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef HAVE_CONFIG_H
312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "config.h"
322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif
332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <tcpdump-stdinc.h>
352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <stdio.h>
372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "interface.h"
392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "extract.h"
402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic char tstr[] = " [|pptp]";
422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_MSG_TYPE_CTRL	1	/* Control Message */
442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_MSG_TYPE_MGMT	2	/* Management Message (currently not used */
452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_MAGIC_COOKIE	0x1a2b3c4d	/* for sanity check */
462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_CTRL_MSG_TYPE_SCCRQ	1
482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_CTRL_MSG_TYPE_SCCRP	2
492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_CTRL_MSG_TYPE_StopCCRQ	3
502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_CTRL_MSG_TYPE_StopCCRP	4
512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_CTRL_MSG_TYPE_ECHORQ	5
522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_CTRL_MSG_TYPE_ECHORP	6
532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_CTRL_MSG_TYPE_OCRQ		7
542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_CTRL_MSG_TYPE_OCRP		8
552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_CTRL_MSG_TYPE_ICRQ		9
562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_CTRL_MSG_TYPE_ICRP		10
572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_CTRL_MSG_TYPE_ICCN		11
582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_CTRL_MSG_TYPE_CCRQ		12
592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_CTRL_MSG_TYPE_CDN		13
602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_CTRL_MSG_TYPE_WEN		14
612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_CTRL_MSG_TYPE_SLI		15
622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_FRAMING_CAP_ASYNC_MASK	0x00000001      /* Aynchronous */
642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_FRAMING_CAP_SYNC_MASK	0x00000002      /* Synchronous */
652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_BEARER_CAP_ANALOG_MASK	0x00000001      /* Analog */
672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_BEARER_CAP_DIGITAL_MASK	0x00000002      /* Digital */
682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const char *pptp_message_type_string[] = {
702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"NOT_DEFINED",		/* 0  Not defined in the RFC2637 */
712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"SCCRQ",		/* 1  Start-Control-Connection-Request */
722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"SCCRP",		/* 2  Start-Control-Connection-Reply */
732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"StopCCRQ",		/* 3  Stop-Control-Connection-Request */
742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"StopCCRP",		/* 4  Stop-Control-Connection-Reply */
752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"ECHORQ",		/* 5  Echo Request */
762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"ECHORP",		/* 6  Echo Reply */
772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"OCRQ",			/* 7  Outgoing-Call-Request */
792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"OCRP",			/* 8  Outgoing-Call-Reply */
802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"ICRQ",			/* 9  Incoming-Call-Request */
812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"ICRP",			/* 10 Incoming-Call-Reply */
822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"ICCN",			/* 11 Incoming-Call-Connected */
832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"CCRQ",			/* 12 Call-Clear-Request */
842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"CDN",			/* 13 Call-Disconnect-Notify */
852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"WEN",			/* 14 WAN-Error-Notify */
872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	"SLI"			/* 15 Set-Link-Info */
892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PPTP_MAX_MSGTYPE_INDEX	16
902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* common for all PPTP control messages */
932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct pptp_hdr {
942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t length;
952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t msg_type;
962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t magic_cookie;
972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t ctrl_msg_type;
982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t reserved0;
992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct pptp_msg_sccrq {
1022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t proto_ver;
1032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t reserved1;
1042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t framing_cap;
1052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t bearer_cap;
1062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t max_channel;
1072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t firm_rev;
1082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_char hostname[64];
1092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_char vendor[64];
1102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct pptp_msg_sccrp {
1132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t proto_ver;
1142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t result_code;
1152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t err_code;
1162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t framing_cap;
1172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t bearer_cap;
1182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t max_channel;
1192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t firm_rev;
1202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_char hostname[64];
1212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_char vendor[64];
1222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct pptp_msg_stopccrq {
1252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t reason;
1262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t reserved1;
1272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t reserved2;
1282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct pptp_msg_stopccrp {
1312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t result_code;
1322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t err_code;
1332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t reserved1;
1342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct pptp_msg_echorq {
1372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t id;
1382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct pptp_msg_echorp {
1412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t id;
1422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t result_code;
1432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t err_code;
1442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t reserved1;
1452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct pptp_msg_ocrq {
1482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t call_id;
1492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t call_ser;
1502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t min_bps;
1512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t max_bps;
1522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t bearer_type;
1532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t framing_type;
1542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t recv_winsiz;
1552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t pkt_proc_delay;
1562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t phone_no_len;
1572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t reserved1;
1582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_char phone_no[64];
1592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_char subaddr[64];
1602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct pptp_msg_ocrp {
1632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t call_id;
1642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t peer_call_id;
1652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t result_code;
1662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t err_code;
1672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t cause_code;
1682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t conn_speed;
1692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t recv_winsiz;
1702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t pkt_proc_delay;
1712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t phy_chan_id;
1722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct pptp_msg_icrq {
1752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t call_id;
1762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t call_ser;
1772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t bearer_type;
1782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t phy_chan_id;
1792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t dialed_no_len;
1802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t dialing_no_len;
1812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_char dialed_no[64];		/* DNIS */
1822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_char dialing_no[64];		/* CLID */
1832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_char subaddr[64];
1842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct pptp_msg_icrp {
1872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t call_id;
1882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t peer_call_id;
1892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t result_code;
1902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t err_code;
1912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t recv_winsiz;
1922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t pkt_proc_delay;
1932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t reserved1;
1942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct pptp_msg_iccn {
1972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t peer_call_id;
1982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t reserved1;
1992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t conn_speed;
2002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t recv_winsiz;
2012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t pkt_proc_delay;
2022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t framing_type;
2032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
2042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct pptp_msg_ccrq {
2062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t call_id;
2072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t reserved1;
2082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
2092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct pptp_msg_cdn {
2112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t call_id;
2122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t result_code;
2132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t err_code;
2142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t cause_code;
2152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t reserved1;
2162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_char call_stats[128];
2172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
2182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct pptp_msg_wen {
2202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t peer_call_id;
2212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t reserved1;
2222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t crc_err;
2232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t framing_err;
2242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t hardware_overrun;
2252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t buffer_overrun;
2262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t timeout_err;
2272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t align_err;
2282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
2292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct pptp_msg_sli {
2312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t peer_call_id;
2322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t reserved1;
2332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t send_accm;
2342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t recv_accm;
2352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
2362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* attributes that appear more than once in above messages:
2382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project   Number of
2402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project   occurence    attributes
2412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  --------------------------------------
2422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      2         u_int32_t bearer_cap;
2432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      2         u_int32_t bearer_type;
2442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      6         u_int16_t call_id;
2452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      2         u_int16_t call_ser;
2462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      2         u_int16_t cause_code;
2472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      2         u_int32_t conn_speed;
2482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      6         u_int8_t err_code;
2492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      2         u_int16_t firm_rev;
2502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      2         u_int32_t framing_cap;
2512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      2         u_int32_t framing_type;
2522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      2         u_char hostname[64];
2532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      2         u_int32_t id;
2542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      2         u_int16_t max_channel;
2552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      5         u_int16_t peer_call_id;
2562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      2         u_int32_t phy_chan_id;
2572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      4         u_int16_t pkt_proc_delay;
2582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      2         u_int16_t proto_ver;
2592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      4         u_int16_t recv_winsiz;
2602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      2         u_int8_t reserved1;
2612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      9         u_int16_t reserved1;
2622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      6         u_int8_t result_code;
2632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      2         u_char subaddr[64];
2642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project      2         u_char vendor[64];
2652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  so I will prepare print out functions for these attributes (except for
2672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  reserved*).
2682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project*/
2692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/******************************************/
2712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* Attribute-specific print out functions */
2722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/******************************************/
2732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* In these attribute-specific print-out functions, it't not necessary
2752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project   to do TCHECK because they are already checked in the caller of
2762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project   these functions. */
2772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
2792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_bearer_cap_print(const u_int32_t *bearer_cap)
2802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
2812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" BEARER_CAP(");
2822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	if (EXTRACT_32BITS(bearer_cap) & PPTP_BEARER_CAP_DIGITAL_MASK) {
2832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project                printf("D");
2842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        }
2852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        if (EXTRACT_32BITS(bearer_cap) & PPTP_BEARER_CAP_ANALOG_MASK) {
2862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project                printf("A");
2872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        }
2882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(")");
2892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
2902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
2922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_bearer_type_print(const u_int32_t *bearer_type)
2932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
2942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" BEARER_TYPE(");
2952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	switch (EXTRACT_32BITS(bearer_type)) {
2962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case 1:
2972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf("A");	/* Analog */
2982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
2992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case 2:
3002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf("D");	/* Digital */
3012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
3022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case 3:
3032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf("Any");
3042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
3052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	default:
3062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf("?");
3072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
3082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        }
3092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(")");
3102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
3112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
3132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_call_id_print(const u_int16_t *call_id)
3142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
3152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" CALL_ID(%u)", EXTRACT_16BITS(call_id));
3162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
3172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
3192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_call_ser_print(const u_int16_t *call_ser)
3202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
3212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" CALL_SER_NUM(%u)", EXTRACT_16BITS(call_ser));
3222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
3232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
3252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_cause_code_print(const u_int16_t *cause_code)
3262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
3272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" CAUSE_CODE(%u)", EXTRACT_16BITS(cause_code));
3282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
3292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
3312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_conn_speed_print(const u_int32_t *conn_speed)
3322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
3332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" CONN_SPEED(%u)", EXTRACT_32BITS(conn_speed));
3342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
3352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
3372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_err_code_print(const u_int8_t *err_code)
3382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
3392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" ERR_CODE(%u", *err_code);
3402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	if (vflag) {
3412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		switch (*err_code) {
3422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case 0:
3432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			printf(":None");
3442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
3452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case 1:
3462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			printf(":Not-Connected");
3472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
3482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case 2:
3492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			printf(":Bad-Format");
3502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
3512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case 3:
3522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			printf(":Bad-Valude");
3532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
3542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case 4:
3552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			printf(":No-Resource");
3562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
3572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case 5:
3582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			printf(":Bad-Call-ID");
3592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
3602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case 6:
3612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			printf(":PAC-Error");
3622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
3632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		default:
3642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			printf(":?");
3652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
3662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		}
3672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
3682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(")");
3692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
3702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
3722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_firm_rev_print(const u_int16_t *firm_rev)
3732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
3742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" FIRM_REV(%u)", EXTRACT_16BITS(firm_rev));
3752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
3762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
3782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_framing_cap_print(const u_int32_t *framing_cap)
3792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
3802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" FRAME_CAP(");
3812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	if (EXTRACT_32BITS(framing_cap) & PPTP_FRAMING_CAP_ASYNC_MASK) {
3822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project                printf("A");		/* Async */
3832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        }
3842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        if (EXTRACT_32BITS(framing_cap) & PPTP_FRAMING_CAP_SYNC_MASK) {
3852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project                printf("S");		/* Sync */
3862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        }
3872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(")");
3882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
3892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
3912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_framing_type_print(const u_int32_t *framing_type)
3922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
3932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" FRAME_TYPE(");
3942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	switch (EXTRACT_32BITS(framing_type)) {
3952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case 1:
3962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf("A");		/* Async */
3972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
3982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case 2:
3992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf("S");		/* Sync */
4002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
4012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case 3:
4022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf("E");		/* Either */
4032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
4042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	default:
4052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf("?");
4062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
4072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
4082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(")");
4092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
4102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
4112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
4122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_hostname_print(const u_char *hostname)
4132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
4142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" HOSTNAME(%.64s)", hostname);
4152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
4162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
4172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
4182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_id_print(const u_int32_t *id)
4192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
4202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" ID(%u)", EXTRACT_32BITS(id));
4212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
4222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
4232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
4242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_max_channel_print(const u_int16_t *max_channel)
4252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
4262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" MAX_CHAN(%u)", EXTRACT_16BITS(max_channel));
4272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
4282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
4292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
4302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_peer_call_id_print(const u_int16_t *peer_call_id)
4312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
4322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" PEER_CALL_ID(%u)", EXTRACT_16BITS(peer_call_id));
4332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
4342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
4352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
4362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_phy_chan_id_print(const u_int32_t *phy_chan_id)
4372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
4382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" PHY_CHAN_ID(%u)", EXTRACT_32BITS(phy_chan_id));
4392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
4402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
4412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
4422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_pkt_proc_delay_print(const u_int16_t *pkt_proc_delay)
4432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
4442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" PROC_DELAY(%u)", EXTRACT_16BITS(pkt_proc_delay));
4452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
4462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
4472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
4482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_proto_ver_print(const u_int16_t *proto_ver)
4492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
4502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" PROTO_VER(%u.%u)",	/* Version.Revision */
4512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	       EXTRACT_16BITS(proto_ver) >> 8,
4522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	       EXTRACT_16BITS(proto_ver) & 0xff);
4532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
4542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
4552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
4562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_recv_winsiz_print(const u_int16_t *recv_winsiz)
4572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
4582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" RECV_WIN(%u)", EXTRACT_16BITS(recv_winsiz));
4592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
4602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
4612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
4622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_result_code_print(const u_int8_t *result_code, int ctrl_msg_type)
4632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
4642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" RESULT_CODE(%u", *result_code);
4652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	if (vflag) {
4662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		switch (ctrl_msg_type) {
4672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case PPTP_CTRL_MSG_TYPE_SCCRP:
4682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			switch (*result_code) {
4692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 1:
4702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":Successful channel establishment");
4712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
4722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 2:
4732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":General error");
4742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
4752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 3:
4762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":Command channel already exists");
4772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
4782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 4:
4792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":Requester is not authorized to establish a command channel");
4802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
4812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 5:
4822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":The protocol version of the requester is not supported");
4832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
4842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			default:
4852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":?");
4862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
4872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			}
4882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
4892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case PPTP_CTRL_MSG_TYPE_StopCCRP:
4902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case PPTP_CTRL_MSG_TYPE_ECHORP:
4912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			switch (*result_code) {
4922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 1:
4932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":OK");
4942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
4952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 2:
4962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":General Error");
4972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
4982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			default:
4992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":?");
5002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			}
5022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
5032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case PPTP_CTRL_MSG_TYPE_OCRP:
5042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			switch (*result_code) {
5052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 1:
5062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":Connected");
5072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 2:
5092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":General Error");
5102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 3:
5122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":No Carrier");
5132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 4:
5152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":Busy");
5162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 5:
5182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":No Dial Tone");
5192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 6:
5212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":Time-out");
5222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 7:
5242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":Do Not Accept");
5252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			default:
5272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":?");
5282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			}
5302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
5312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case PPTP_CTRL_MSG_TYPE_ICRP:
5322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			switch (*result_code) {
5332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 1:
5342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":Connect");
5352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 2:
5372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":General Error");
5382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 3:
5402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":Do Not Accept");
5412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			default:
5432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":?");
5442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			}
5462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
5472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case PPTP_CTRL_MSG_TYPE_CDN:
5482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			switch (*result_code) {
5492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 1:
5502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":Lost Carrier");
5512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 2:
5532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":General Error");
5542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 3:
5562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":Admin Shutdown");
5572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			case 4:
5592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":Request");
5602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			default:
5612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				printf(":?");
5622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project				break;
5632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
5642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			}
5652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		default:
5662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			/* assertion error */
5672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
5682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		}
5692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
5702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(")");
5712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
5722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
5732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
5742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_subaddr_print(const u_char *subaddr)
5752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
5762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" SUB_ADDR(%.64s)", subaddr);
5772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
5782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
5792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
5802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_vendor_print(const u_char *vendor)
5812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
5822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" VENDOR(%.64s)", vendor);
5832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
5842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
5852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/************************************/
5862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* PPTP message print out functions */
5872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/************************************/
5882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
5892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_sccrq_print(const u_char *dat)
5902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
5912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct pptp_msg_sccrq *ptr = (struct pptp_msg_sccrq *)dat;
5922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
5932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->proto_ver);
5942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_proto_ver_print(&ptr->proto_ver);
5952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->reserved1);
5962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->framing_cap);
5972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_framing_cap_print(&ptr->framing_cap);
5982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->bearer_cap);
5992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_bearer_cap_print(&ptr->bearer_cap);
6002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->max_channel);
6012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_max_channel_print(&ptr->max_channel);
6022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->firm_rev);
6032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_firm_rev_print(&ptr->firm_rev);
6042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->hostname);
6052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_hostname_print(&ptr->hostname[0]);
6062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->vendor);
6072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_vendor_print(&ptr->vendor[0]);
6082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
6092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return;
6102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
6112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc:
6122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf("%s", tstr);
6132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
6142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
6152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
6162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_sccrp_print(const u_char *dat)
6172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
6182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct pptp_msg_sccrp *ptr = (struct pptp_msg_sccrp *)dat;
6192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
6202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->proto_ver);
6212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_proto_ver_print(&ptr->proto_ver);
6222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->result_code);
6232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_SCCRP);
6242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->err_code);
6252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_err_code_print(&ptr->err_code);
6262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->framing_cap);
6272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_framing_cap_print(&ptr->framing_cap);
6282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->bearer_cap);
6292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_bearer_cap_print(&ptr->bearer_cap);
6302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->max_channel);
6312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_max_channel_print(&ptr->max_channel);
6322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->firm_rev);
6332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_firm_rev_print(&ptr->firm_rev);
6342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->hostname);
6352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_hostname_print(&ptr->hostname[0]);
6362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->vendor);
6372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_vendor_print(&ptr->vendor[0]);
6382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
6392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return;
6402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
6412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc:
6422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf("%s", tstr);
6432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
6442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
6452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
6462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_stopccrq_print(const u_char *dat)
6472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
6482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct pptp_msg_stopccrq *ptr = (struct pptp_msg_stopccrq *)dat;
6492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
6502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->reason);
6512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" REASON(%u", ptr->reason);
6522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	if (vflag) {
6532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		switch (ptr->reason) {
6542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case 1:
6552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			printf(":None");
6562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
6572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case 2:
6582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			printf(":Stop-Protocol");
6592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
6602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case 3:
6612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			printf(":Stop-Local-Shutdown");
6622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
6632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		default:
6642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			printf(":?");
6652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
6662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		}
6672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
6682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(")");
6692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->reserved1);
6702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->reserved2);
6712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
6722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return;
6732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
6742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc:
6752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf("%s", tstr);
6762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
6772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
6782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
6792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_stopccrp_print(const u_char *dat)
6802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
6812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct pptp_msg_stopccrp *ptr = (struct pptp_msg_stopccrp *)dat;
6822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
6832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->result_code);
6842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_StopCCRP);
6852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->err_code);
6862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_err_code_print(&ptr->err_code);
6872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->reserved1);
6882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
6892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return;
6902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
6912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc:
6922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf("%s", tstr);
6932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
6942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
6952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
6962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_echorq_print(const u_char *dat)
6972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
6982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct pptp_msg_echorq *ptr = (struct pptp_msg_echorq *)dat;
6992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->id);
7012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_id_print(&ptr->id);
7022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return;
7042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc:
7062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf("%s", tstr);
7072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
7082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
7102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_echorp_print(const u_char *dat)
7112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
7122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct pptp_msg_echorp *ptr = (struct pptp_msg_echorp *)dat;
7132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->id);
7152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_id_print(&ptr->id);
7162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->result_code);
7172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_ECHORP);
7182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->err_code);
7192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_err_code_print(&ptr->err_code);
7202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->reserved1);
7212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return;
7232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc:
7252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf("%s", tstr);
7262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
7272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
7292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_ocrq_print(const u_char *dat)
7302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
7312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct pptp_msg_ocrq *ptr = (struct pptp_msg_ocrq *)dat;
7322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->call_id);
7342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_call_id_print(&ptr->call_id);
7352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->call_ser);
7362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_call_ser_print(&ptr->call_ser);
7372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->min_bps);
7382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" MIN_BPS(%u)", EXTRACT_32BITS(&ptr->min_bps));
7392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->max_bps);
7402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" MAX_BPS(%u)", EXTRACT_32BITS(&ptr->max_bps));
7412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->bearer_type);
7422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_bearer_type_print(&ptr->bearer_type);
7432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->framing_type);
7442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_framing_type_print(&ptr->framing_type);
7452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->recv_winsiz);
7462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_recv_winsiz_print(&ptr->recv_winsiz);
7472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->pkt_proc_delay);
7482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_pkt_proc_delay_print(&ptr->pkt_proc_delay);
7492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->phone_no_len);
7502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" PHONE_NO_LEN(%u)", EXTRACT_16BITS(&ptr->phone_no_len));
7512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->reserved1);
7522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->phone_no);
7532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" PHONE_NO(%.64s)", ptr->phone_no);
7542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->subaddr);
7552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_subaddr_print(&ptr->subaddr[0]);
7562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return;
7582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc:
7602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf("%s", tstr);
7612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
7622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
7642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_ocrp_print(const u_char *dat)
7652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
7662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct pptp_msg_ocrp *ptr = (struct pptp_msg_ocrp *)dat;
7672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->call_id);
7692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_call_id_print(&ptr->call_id);
7702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->peer_call_id);
7712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_peer_call_id_print(&ptr->peer_call_id);
7722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->result_code);
7732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_OCRP);
7742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->err_code);
7752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_err_code_print(&ptr->err_code);
7762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->cause_code);
7772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_cause_code_print(&ptr->cause_code);
7782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->conn_speed);
7792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_conn_speed_print(&ptr->conn_speed);
7802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->recv_winsiz);
7812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_recv_winsiz_print(&ptr->recv_winsiz);
7822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->pkt_proc_delay);
7832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_pkt_proc_delay_print(&ptr->pkt_proc_delay);
7842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->phy_chan_id);
7852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_phy_chan_id_print(&ptr->phy_chan_id);
7862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return;
7882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc:
7902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf("%s", tstr);
7912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
7922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
7942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_icrq_print(const u_char *dat)
7952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
7962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct pptp_msg_icrq *ptr = (struct pptp_msg_icrq *)dat;
7972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
7982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->call_id);
7992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_call_id_print(&ptr->call_id);
8002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->call_ser);
8012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_call_ser_print(&ptr->call_ser);
8022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->bearer_type);
8032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_bearer_type_print(&ptr->bearer_type);
8042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->phy_chan_id);
8052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_phy_chan_id_print(&ptr->phy_chan_id);
8062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->dialed_no_len);
8072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" DIALED_NO_LEN(%u)", EXTRACT_16BITS(&ptr->dialed_no_len));
8082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->dialing_no_len);
8092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" DIALING_NO_LEN(%u)", EXTRACT_16BITS(&ptr->dialing_no_len));
8102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->dialed_no);
8112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" DIALED_NO(%.64s)", ptr->dialed_no);
8122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->dialing_no);
8132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" DIALING_NO(%.64s)", ptr->dialing_no);
8142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->subaddr);
8152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_subaddr_print(&ptr->subaddr[0]);
8162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
8172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return;
8182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
8192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc:
8202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf("%s", tstr);
8212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
8222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
8232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
8242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_icrp_print(const u_char *dat)
8252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
8262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct pptp_msg_icrp *ptr = (struct pptp_msg_icrp *)dat;
8272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
8282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->call_id);
8292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_call_id_print(&ptr->call_id);
8302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->peer_call_id);
8312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_peer_call_id_print(&ptr->peer_call_id);
8322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->result_code);
8332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_ICRP);
8342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->err_code);
8352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_err_code_print(&ptr->err_code);
8362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->recv_winsiz);
8372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_recv_winsiz_print(&ptr->recv_winsiz);
8382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->pkt_proc_delay);
8392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_pkt_proc_delay_print(&ptr->pkt_proc_delay);
8402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->reserved1);
8412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
8422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return;
8432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
8442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc:
8452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf("%s", tstr);
8462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
8472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
8482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
8492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_iccn_print(const u_char *dat)
8502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
8512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct pptp_msg_iccn *ptr = (struct pptp_msg_iccn *)dat;
8522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
8532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->peer_call_id);
8542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_peer_call_id_print(&ptr->peer_call_id);
8552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->reserved1);
8562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->conn_speed);
8572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_conn_speed_print(&ptr->conn_speed);
8582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->recv_winsiz);
8592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_recv_winsiz_print(&ptr->recv_winsiz);
8602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->pkt_proc_delay);
8612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_pkt_proc_delay_print(&ptr->pkt_proc_delay);
8622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->framing_type);
8632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_framing_type_print(&ptr->framing_type);
8642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
8652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return;
8662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
8672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc:
8682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf("%s", tstr);
8692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
8702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
8712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
8722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_ccrq_print(const u_char *dat)
8732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
8742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct pptp_msg_ccrq *ptr = (struct pptp_msg_ccrq *)dat;
8752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
8762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->call_id);
8772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_call_id_print(&ptr->call_id);
8782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->reserved1);
8792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
8802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return;
8812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
8822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc:
8832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf("%s", tstr);
8842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
8852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
8862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
8872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_cdn_print(const u_char *dat)
8882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
8892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct pptp_msg_cdn *ptr = (struct pptp_msg_cdn *)dat;
8902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
8912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->call_id);
8922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_call_id_print(&ptr->call_id);
8932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->result_code);
8942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_CDN);
8952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->err_code);
8962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_err_code_print(&ptr->err_code);
8972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->cause_code);
8982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_cause_code_print(&ptr->cause_code);
8992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->reserved1);
9002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->call_stats);
9012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" CALL_STATS(%.128s)", ptr->call_stats);
9022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
9032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return;
9042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
9052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc:
9062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf("%s", tstr);
9072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
9082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
9092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
9102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_wen_print(const u_char *dat)
9112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
9122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct pptp_msg_wen *ptr = (struct pptp_msg_wen *)dat;
9132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
9142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->peer_call_id);
9152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_peer_call_id_print(&ptr->peer_call_id);
9162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->reserved1);
9172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->crc_err);
9182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" CRC_ERR(%u)", EXTRACT_32BITS(&ptr->crc_err));
9192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->framing_err);
9202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" FRAMING_ERR(%u)", EXTRACT_32BITS(&ptr->framing_err));
9212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->hardware_overrun);
9222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" HARDWARE_OVERRUN(%u)", EXTRACT_32BITS(&ptr->hardware_overrun));
9232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->buffer_overrun);
9242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" BUFFER_OVERRUN(%u)", EXTRACT_32BITS(&ptr->buffer_overrun));
9252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->timeout_err);
9262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" TIMEOUT_ERR(%u)", EXTRACT_32BITS(&ptr->timeout_err));
9272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->align_err);
9282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" ALIGN_ERR(%u)", EXTRACT_32BITS(&ptr->align_err));
9292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
9302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return;
9312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
9322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc:
9332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf("%s", tstr);
9342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
9352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
9362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic void
9372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_sli_print(const u_char *dat)
9382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
9392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct pptp_msg_sli *ptr = (struct pptp_msg_sli *)dat;
9402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
9412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->peer_call_id);
9422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	pptp_peer_call_id_print(&ptr->peer_call_id);
9432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->reserved1);
9442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->send_accm);
9452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" SEND_ACCM(0x%08x)", EXTRACT_32BITS(&ptr->send_accm));
9462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(ptr->recv_accm);
9472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(" RECV_ACCM(0x%08x)", EXTRACT_32BITS(&ptr->recv_accm));
9482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
9492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return;
9502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
9512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc:
9522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf("%s", tstr);
9532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
9542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
9552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectvoid
9562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectpptp_print(const u_char *dat)
9572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
9582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	const struct pptp_hdr *hdr;
9592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t mc;
9602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t ctrl_msg_type;
9612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
9622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf(": pptp");
9632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
9642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	hdr = (struct pptp_hdr *)dat;
9652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
9662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(hdr->length);
9672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	if (vflag) {
9682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf(" Length=%u", EXTRACT_16BITS(&hdr->length));
9692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
9702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(hdr->msg_type);
9712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	if (vflag) {
9722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		switch(EXTRACT_16BITS(&hdr->msg_type)) {
9732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case PPTP_MSG_TYPE_CTRL:
9742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			printf(" CTRL-MSG");
9752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
9762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		case PPTP_MSG_TYPE_MGMT:
9772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			printf(" MGMT-MSG");
9782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
9792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		default:
9802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			printf(" UNKNOWN-MSG-TYPE");
9812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break;
9822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		}
9832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
9842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
9852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(hdr->magic_cookie);
9862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	mc = EXTRACT_32BITS(&hdr->magic_cookie);
9872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	if (mc != PPTP_MAGIC_COOKIE) {
9882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf(" UNEXPECTED Magic-Cookie!!(%08x)", mc);
9892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
9902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	if (vflag || mc != PPTP_MAGIC_COOKIE) {
9912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf(" Magic-Cookie=%08x", mc);
9922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
9932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(hdr->ctrl_msg_type);
9942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	ctrl_msg_type = EXTRACT_16BITS(&hdr->ctrl_msg_type);
9952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	if (ctrl_msg_type < PPTP_MAX_MSGTYPE_INDEX) {
9962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf(" CTRL_MSGTYPE=%s",
9972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		       pptp_message_type_string[ctrl_msg_type]);
9982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	} else {
9992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf(" UNKNOWN_CTRL_MSGTYPE(%u)", ctrl_msg_type);
10002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
10012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	TCHECK(hdr->reserved0);
10022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
10032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	dat += 12;
10042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
10052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	switch(ctrl_msg_type) {
10062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case PPTP_CTRL_MSG_TYPE_SCCRQ:
10072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		pptp_sccrq_print(dat);
10082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
10092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case PPTP_CTRL_MSG_TYPE_SCCRP:
10102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		pptp_sccrp_print(dat);
10112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
10122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case PPTP_CTRL_MSG_TYPE_StopCCRQ:
10132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		pptp_stopccrq_print(dat);
10142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
10152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case PPTP_CTRL_MSG_TYPE_StopCCRP:
10162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		pptp_stopccrp_print(dat);
10172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
10182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case PPTP_CTRL_MSG_TYPE_ECHORQ:
10192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		pptp_echorq_print(dat);
10202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
10212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case PPTP_CTRL_MSG_TYPE_ECHORP:
10222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		pptp_echorp_print(dat);
10232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
10242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case PPTP_CTRL_MSG_TYPE_OCRQ:
10252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		pptp_ocrq_print(dat);
10262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
10272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case PPTP_CTRL_MSG_TYPE_OCRP:
10282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		pptp_ocrp_print(dat);
10292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
10302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case PPTP_CTRL_MSG_TYPE_ICRQ:
10312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		pptp_icrq_print(dat);
10322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
10332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case PPTP_CTRL_MSG_TYPE_ICRP:
10342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		pptp_icrp_print(dat);
10352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
10362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case PPTP_CTRL_MSG_TYPE_ICCN:
10372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		pptp_iccn_print(dat);
10382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
10392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case PPTP_CTRL_MSG_TYPE_CCRQ:
10402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		pptp_ccrq_print(dat);
10412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
10422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case PPTP_CTRL_MSG_TYPE_CDN:
10432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		pptp_cdn_print(dat);
10442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
10452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case PPTP_CTRL_MSG_TYPE_WEN:
10462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		pptp_wen_print(dat);
10472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
10482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	case PPTP_CTRL_MSG_TYPE_SLI:
10492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		pptp_sli_print(dat);
10502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
10512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	default:
10522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		/* do nothing */
10532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		break;
10542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
10552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
10562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	return;
10572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
10582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrunc:
10592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	printf("%s", tstr);
10602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
1061