print-pptp.c

来自「TCPDUMP的C语言源代码,是在数据链路层的应用」· C语言 代码 · 共 1,061 行 · 第 1/2 页

C
1,061
字号
			switch (*result_code) {			case 1:				printf(":Connect");				break;			case 2:				printf(":General Error");				break;			case 3:				printf(":Do Not Accept");				break;			default:				printf(":?");				break;			}			break;		case PPTP_CTRL_MSG_TYPE_CDN:			switch (*result_code) {			case 1:				printf(":Lost Carrier");				break;			case 2:				printf(":General Error");				break;			case 3:				printf(":Admin Shutdown");				break;			case 4:				printf(":Request");			default:				printf(":?");				break;			break;			}		default:			/* assertion error */			break;		}	}	printf(")");}static voidpptp_subaddr_print(const u_char *subaddr){	printf(" SUB_ADDR(%.64s)", subaddr);}static voidpptp_vendor_print(const u_char *vendor){	printf(" VENDOR(%.64s)", vendor);}/************************************//* PPTP message print out functions *//************************************/static voidpptp_sccrq_print(const u_char *dat){	struct pptp_msg_sccrq *ptr = (struct pptp_msg_sccrq *)dat;	TCHECK(ptr->proto_ver);	pptp_proto_ver_print(&ptr->proto_ver);	TCHECK(ptr->reserved1);	TCHECK(ptr->framing_cap);	pptp_framing_cap_print(&ptr->framing_cap);	TCHECK(ptr->bearer_cap);	pptp_bearer_cap_print(&ptr->bearer_cap);	TCHECK(ptr->max_channel);	pptp_max_channel_print(&ptr->max_channel);	TCHECK(ptr->firm_rev);	pptp_firm_rev_print(&ptr->firm_rev);	TCHECK(ptr->hostname);	pptp_hostname_print(&ptr->hostname[0]);	TCHECK(ptr->vendor);	pptp_vendor_print(&ptr->vendor[0]);	return;trunc:	printf("%s", tstr);}static voidpptp_sccrp_print(const u_char *dat){	struct pptp_msg_sccrp *ptr = (struct pptp_msg_sccrp *)dat;	TCHECK(ptr->proto_ver);	pptp_proto_ver_print(&ptr->proto_ver);	TCHECK(ptr->result_code);	pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_SCCRP);	TCHECK(ptr->err_code);	pptp_err_code_print(&ptr->err_code);	TCHECK(ptr->framing_cap);	pptp_framing_cap_print(&ptr->framing_cap);	TCHECK(ptr->bearer_cap);	pptp_bearer_cap_print(&ptr->bearer_cap);	TCHECK(ptr->max_channel);	pptp_max_channel_print(&ptr->max_channel);	TCHECK(ptr->firm_rev);	pptp_firm_rev_print(&ptr->firm_rev);	TCHECK(ptr->hostname);	pptp_hostname_print(&ptr->hostname[0]);	TCHECK(ptr->vendor);	pptp_vendor_print(&ptr->vendor[0]);	return;trunc:	printf("%s", tstr);}static voidpptp_stopccrq_print(const u_char *dat){	struct pptp_msg_stopccrq *ptr = (struct pptp_msg_stopccrq *)dat;	TCHECK(ptr->reason);	printf(" REASON(%u", ptr->reason);	if (vflag) {		switch (ptr->reason) {		case 1:			printf(":None");			break;		case 2:			printf(":Stop-Protocol");			break;		case 3:			printf(":Stop-Local-Shutdown");			break;		default:			printf(":?");			break;		}	}	printf(")");	TCHECK(ptr->reserved1);	TCHECK(ptr->reserved2);	return;trunc:	printf("%s", tstr);}static voidpptp_stopccrp_print(const u_char *dat){	struct pptp_msg_stopccrp *ptr = (struct pptp_msg_stopccrp *)dat;	TCHECK(ptr->result_code);	pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_StopCCRP);	TCHECK(ptr->err_code);	pptp_err_code_print(&ptr->err_code);	TCHECK(ptr->reserved1);	return;trunc:	printf("%s", tstr);}static voidpptp_echorq_print(const u_char *dat){	struct pptp_msg_echorq *ptr = (struct pptp_msg_echorq *)dat;	TCHECK(ptr->id);	pptp_id_print(&ptr->id);	return;trunc:	printf("%s", tstr);}static voidpptp_echorp_print(const u_char *dat){	struct pptp_msg_echorp *ptr = (struct pptp_msg_echorp *)dat;	TCHECK(ptr->id);	pptp_id_print(&ptr->id);	TCHECK(ptr->result_code);	pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_ECHORP);	TCHECK(ptr->err_code);	pptp_err_code_print(&ptr->err_code);	TCHECK(ptr->reserved1);	return;trunc:	printf("%s", tstr);}static voidpptp_ocrq_print(const u_char *dat){	struct pptp_msg_ocrq *ptr = (struct pptp_msg_ocrq *)dat;	TCHECK(ptr->call_id);	pptp_call_id_print(&ptr->call_id);	TCHECK(ptr->call_ser);	pptp_call_ser_print(&ptr->call_ser);	TCHECK(ptr->min_bps);	printf(" MIN_BPS(%u)", EXTRACT_32BITS(&ptr->min_bps));	TCHECK(ptr->max_bps);	printf(" MAX_BPS(%u)", EXTRACT_32BITS(&ptr->max_bps));	TCHECK(ptr->bearer_type);	pptp_bearer_type_print(&ptr->bearer_type);	TCHECK(ptr->framing_type);	pptp_framing_type_print(&ptr->framing_type);	TCHECK(ptr->recv_winsiz);	pptp_recv_winsiz_print(&ptr->recv_winsiz);	TCHECK(ptr->pkt_proc_delay);	pptp_pkt_proc_delay_print(&ptr->pkt_proc_delay);	TCHECK(ptr->phone_no_len);	printf(" PHONE_NO_LEN(%u)", EXTRACT_16BITS(&ptr->phone_no_len));	TCHECK(ptr->reserved1);	TCHECK(ptr->phone_no);	printf(" PHONE_NO(%.64s)", ptr->phone_no);	TCHECK(ptr->subaddr);	pptp_subaddr_print(&ptr->subaddr[0]);	return;trunc:	printf("%s", tstr);}static voidpptp_ocrp_print(const u_char *dat){	struct pptp_msg_ocrp *ptr = (struct pptp_msg_ocrp *)dat;	TCHECK(ptr->call_id);	pptp_call_id_print(&ptr->call_id);	TCHECK(ptr->peer_call_id);	pptp_peer_call_id_print(&ptr->peer_call_id);	TCHECK(ptr->result_code);	pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_OCRP);	TCHECK(ptr->err_code);	pptp_err_code_print(&ptr->err_code);	TCHECK(ptr->cause_code);	pptp_cause_code_print(&ptr->cause_code);	TCHECK(ptr->conn_speed);	pptp_conn_speed_print(&ptr->conn_speed);	TCHECK(ptr->recv_winsiz);	pptp_recv_winsiz_print(&ptr->recv_winsiz);	TCHECK(ptr->pkt_proc_delay);	pptp_pkt_proc_delay_print(&ptr->pkt_proc_delay);	TCHECK(ptr->phy_chan_id);	pptp_phy_chan_id_print(&ptr->phy_chan_id);	return;trunc:	printf("%s", tstr);}static voidpptp_icrq_print(const u_char *dat){	struct pptp_msg_icrq *ptr = (struct pptp_msg_icrq *)dat;	TCHECK(ptr->call_id);	pptp_call_id_print(&ptr->call_id);	TCHECK(ptr->call_ser);	pptp_call_ser_print(&ptr->call_ser);	TCHECK(ptr->bearer_type);	pptp_bearer_type_print(&ptr->bearer_type);	TCHECK(ptr->phy_chan_id);	pptp_phy_chan_id_print(&ptr->phy_chan_id);	TCHECK(ptr->dialed_no_len);	printf(" DIALED_NO_LEN(%u)", EXTRACT_16BITS(&ptr->dialed_no_len));	TCHECK(ptr->dialing_no_len);	printf(" DIALING_NO_LEN(%u)", EXTRACT_16BITS(&ptr->dialing_no_len));	TCHECK(ptr->dialed_no);	printf(" DIALED_NO(%.64s)", ptr->dialed_no);	TCHECK(ptr->dialing_no);	printf(" DIALING_NO(%.64s)", ptr->dialing_no);	TCHECK(ptr->subaddr);	pptp_subaddr_print(&ptr->subaddr[0]);	return;trunc:	printf("%s", tstr);}static voidpptp_icrp_print(const u_char *dat){	struct pptp_msg_icrp *ptr = (struct pptp_msg_icrp *)dat;	TCHECK(ptr->call_id);	pptp_call_id_print(&ptr->call_id);	TCHECK(ptr->peer_call_id);	pptp_peer_call_id_print(&ptr->peer_call_id);	TCHECK(ptr->result_code);	pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_ICRP);	TCHECK(ptr->err_code);	pptp_err_code_print(&ptr->err_code);	TCHECK(ptr->recv_winsiz);	pptp_recv_winsiz_print(&ptr->recv_winsiz);	TCHECK(ptr->pkt_proc_delay);	pptp_pkt_proc_delay_print(&ptr->pkt_proc_delay);	TCHECK(ptr->reserved1);	return;trunc:	printf("%s", tstr);}static voidpptp_iccn_print(const u_char *dat){	struct pptp_msg_iccn *ptr = (struct pptp_msg_iccn *)dat;	TCHECK(ptr->peer_call_id);	pptp_peer_call_id_print(&ptr->peer_call_id);	TCHECK(ptr->reserved1);	TCHECK(ptr->conn_speed);	pptp_conn_speed_print(&ptr->conn_speed);	TCHECK(ptr->recv_winsiz);	pptp_recv_winsiz_print(&ptr->recv_winsiz);	TCHECK(ptr->pkt_proc_delay);	pptp_pkt_proc_delay_print(&ptr->pkt_proc_delay);	TCHECK(ptr->framing_type);	pptp_framing_type_print(&ptr->framing_type);	return;trunc:	printf("%s", tstr);}static voidpptp_ccrq_print(const u_char *dat){	struct pptp_msg_ccrq *ptr = (struct pptp_msg_ccrq *)dat;	TCHECK(ptr->call_id);	pptp_call_id_print(&ptr->call_id);	TCHECK(ptr->reserved1);	return;trunc:	printf("%s", tstr);}static voidpptp_cdn_print(const u_char *dat){	struct pptp_msg_cdn *ptr = (struct pptp_msg_cdn *)dat;	TCHECK(ptr->call_id);	pptp_call_id_print(&ptr->call_id);	TCHECK(ptr->result_code);	pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_CDN);	TCHECK(ptr->err_code);	pptp_err_code_print(&ptr->err_code);	TCHECK(ptr->cause_code);	pptp_cause_code_print(&ptr->cause_code);	TCHECK(ptr->reserved1);	TCHECK(ptr->call_stats);	printf(" CALL_STATS(%.128s)", ptr->call_stats);	return;trunc:	printf("%s", tstr);}static voidpptp_wen_print(const u_char *dat){	struct pptp_msg_wen *ptr = (struct pptp_msg_wen *)dat;	TCHECK(ptr->peer_call_id);	pptp_peer_call_id_print(&ptr->peer_call_id);	TCHECK(ptr->reserved1);	TCHECK(ptr->crc_err);	printf(" CRC_ERR(%u)", EXTRACT_32BITS(&ptr->crc_err));	TCHECK(ptr->framing_err);	printf(" FRAMING_ERR(%u)", EXTRACT_32BITS(&ptr->framing_err));	TCHECK(ptr->hardware_overrun);	printf(" HARDWARE_OVERRUN(%u)", EXTRACT_32BITS(&ptr->hardware_overrun));	TCHECK(ptr->buffer_overrun);	printf(" BUFFER_OVERRUN(%u)", EXTRACT_32BITS(&ptr->buffer_overrun));	TCHECK(ptr->timeout_err);	printf(" TIMEOUT_ERR(%u)", EXTRACT_32BITS(&ptr->timeout_err));	TCHECK(ptr->align_err);	printf(" ALIGN_ERR(%u)", EXTRACT_32BITS(&ptr->align_err));	return;trunc:	printf("%s", tstr);}static voidpptp_sli_print(const u_char *dat){	struct pptp_msg_sli *ptr = (struct pptp_msg_sli *)dat;	TCHECK(ptr->peer_call_id);	pptp_peer_call_id_print(&ptr->peer_call_id);	TCHECK(ptr->reserved1);	TCHECK(ptr->send_accm);	printf(" SEND_ACCM(0x%08x)", EXTRACT_32BITS(&ptr->send_accm));	TCHECK(ptr->recv_accm);	printf(" RECV_ACCM(0x%08x)", EXTRACT_32BITS(&ptr->recv_accm));	return;trunc:	printf("%s", tstr);}voidpptp_print(const u_char *dat){	const struct pptp_hdr *hdr;	u_int32_t mc;	u_int16_t ctrl_msg_type;	printf(": pptp");	hdr = (struct pptp_hdr *)dat;	TCHECK(hdr->length);	if (vflag) {		printf(" Length=%u", EXTRACT_16BITS(&hdr->length));	}	TCHECK(hdr->msg_type);	if (vflag) {		switch(EXTRACT_16BITS(&hdr->msg_type)) {		case PPTP_MSG_TYPE_CTRL:			printf(" CTRL-MSG");			break;		case PPTP_MSG_TYPE_MGMT:			printf(" MGMT-MSG");			break;		default:			printf(" UNKNOWN-MSG-TYPE");			break;		}	}	TCHECK(hdr->magic_cookie);	mc = EXTRACT_32BITS(&hdr->magic_cookie);	if (mc != PPTP_MAGIC_COOKIE) {		printf(" UNEXPECTED Magic-Cookie!!(%08x)", mc);	}	if (vflag || mc != PPTP_MAGIC_COOKIE) {		printf(" Magic-Cookie=%08x", mc);	}	TCHECK(hdr->ctrl_msg_type);	ctrl_msg_type = EXTRACT_16BITS(&hdr->ctrl_msg_type);	if (ctrl_msg_type < PPTP_MAX_MSGTYPE_INDEX) {		printf(" CTRL_MSGTYPE=%s",		       pptp_message_type_string[ctrl_msg_type]);	} else {		printf(" UNKNOWN_CTRL_MSGTYPE(%u)", ctrl_msg_type);	}	TCHECK(hdr->reserved0);	dat += 12;	switch(ctrl_msg_type) {	case PPTP_CTRL_MSG_TYPE_SCCRQ:		pptp_sccrq_print(dat);		break;	case PPTP_CTRL_MSG_TYPE_SCCRP:		pptp_sccrp_print(dat);		break;	case PPTP_CTRL_MSG_TYPE_StopCCRQ:		pptp_stopccrq_print(dat);		break;	case PPTP_CTRL_MSG_TYPE_StopCCRP:		pptp_stopccrp_print(dat);		break;	case PPTP_CTRL_MSG_TYPE_ECHORQ:		pptp_echorq_print(dat);		break;	case PPTP_CTRL_MSG_TYPE_ECHORP:		pptp_echorp_print(dat);		break;	case PPTP_CTRL_MSG_TYPE_OCRQ:		pptp_ocrq_print(dat);		break;	case PPTP_CTRL_MSG_TYPE_OCRP:		pptp_ocrp_print(dat);		break;	case PPTP_CTRL_MSG_TYPE_ICRQ:		pptp_icrq_print(dat);		break;	case PPTP_CTRL_MSG_TYPE_ICRP:		pptp_icrp_print(dat);		break;	case PPTP_CTRL_MSG_TYPE_ICCN:		pptp_iccn_print(dat);		break;	case PPTP_CTRL_MSG_TYPE_CCRQ:		pptp_ccrq_print(dat);		break;	case PPTP_CTRL_MSG_TYPE_CDN:		pptp_cdn_print(dat);		break;	case PPTP_CTRL_MSG_TYPE_WEN:		pptp_wen_print(dat);		break;	case PPTP_CTRL_MSG_TYPE_SLI:		pptp_sli_print(dat);		break;	default:		/* do nothing */		break;	}	return;trunc:	printf("%s", tstr);}

⌨️ 快捷键说明

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