亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mtp_tpi.c

?? OpenSS7 This the fourth public release of the OpenSS7 Master Package. See README in the release for
?? C
?? 第 1 頁 / 共 5 頁
字號:
/***************************************************************************** @(#) mtp_tpi.c,v openss7-0_9_2_E(0.9.2.22) 2007/02/26 07:25:40 ----------------------------------------------------------------------------- Copyright (c) 2001-2007  OpenSS7 Corporation <http://www.openss7.com/> Copyright (c) 1997-2000  Brian F. G. Bidulock <bidulock@openss7.org> All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ----------------------------------------------------------------------------- U.S. GOVERNMENT RESTRICTED RIGHTS.  If you are licensing this Software on behalf of the U.S. Government ("Government"), the following provisions apply to you.  If the Software is supplied by the Department of Defense ("DoD"), it is classified as "Commercial Computer Software" under paragraph 252.227-7014 of the DoD Supplement to the Federal Acquisition Regulations ("DFARS") (or any successor regulations) and the Government is acquiring only the license rights granted herein (the license rights customarily provided to non-Government users).  If the Software is supplied to any unit or agency of the Government other than DoD, it is classified as "Restricted Computer Software" and the Government's rights in the Software are defined in paragraph 52.227-19 of the Federal Acquisition Regulations ("FAR") (or any successor regulations) or, in the cases of NASA, in paragraph 18.52.227-86 of the NASA Supplement to the FAR (or any successor regulations). ----------------------------------------------------------------------------- Commercial licensing and support of this software is available from OpenSS7 Corporation at a fee.  See http://www.openss7.com/ ----------------------------------------------------------------------------- Last Modified 2007/02/26 07:25:40 by brian ----------------------------------------------------------------------------- mtp_tpi.c,v Revision 0.9.2.22  2007/02/26 07:25:40  brian - synchronizing changes Revision 0.9.2.21  2007/02/17 02:49:17  brian - first clean recompile of MTP modules on LFS Revision 0.9.2.20  2007/02/14 14:09:12  brian - broad changes updating support for SS7 MTP and M3UA Revision 0.9.2.19  2007/02/13 07:55:43  brian - working up MTP and UAs Revision 0.9.2.18  2006/05/08 11:01:01  brian - new compilers mishandle postincrement of cast pointers Revision 0.9.2.17  2006/03/07 01:10:50  brian - binary compatible callouts Revision 0.9.2.16  2006/03/04 13:00:16  brian - FC4 x86_64 gcc 4.0.4 2.6.15 changes *****************************************************************************/#ident "@(#) mtp_tpi.c,v openss7-0_9_2_E(0.9.2.22) 2007/02/26 07:25:40"static char const ident[] =    "mtp_tpi.c,v openss7-0_9_2_E(0.9.2.22) 2007/02/26 07:25:40";/* *  This is a MTP TPI module which can be pushed over an MTPI (Message Transfer Part Interface) *  stream to effect a TPI interface to the MTP.  This module is intended to be used by application *  programs or by upper modules that expect a TPI connectionless service provider. */#define _LFS_SOURCE 1#define _SVR4_SOURCE 1#define _MPS_SOURCE 1#define _SUN_SOURCE 1#include <sys/os7/compat.h>#include <sys/strsun.h>#undef DB_TYPE#define DB_TYPE(mp) ((mp)->b_datap->db_type)#include <linux/socket.h>#include <ss7/lmi.h>#include <ss7/lmi_ioctl.h>#include <ss7/mtpi.h>#include <ss7/mtpi_ioctl.h>#include <sys/tihdr.h>#include <sys/xti.h>#include <sys/xti_mtp.h>#define MTP_TPI_DESCRIP		"SS7 Message Transfer Part (MTP) TPI STREAMS MODULE."#define MTP_TPI_REVISION	"LfS mtp_tpi.c,v openss7-0_9_2_E(0.9.2.22) 2007/02/26 07:25:40"#define MTP_TPI_COPYRIGHT	"Copyright (c) 1997-2007 OpenSS7 Corporation.  All Rights Reserved."#define MTP_TPI_DEVICE		"Part of the OpenSS7 Stack for Linux Fast-STREAMS."#define MTP_TPI_CONTACT		"Brian Bidulock <bidulock@openss7.org>"#define MTP_TPI_LICENSE		"GPL"#define MTP_TPI_BANNER		MTP_TPI_DESCRIP		"\n" \				MTP_TPI_REVISION	"\n" \				MTP_TPI_COPYRIGHT	"\n" \				MTP_TPI_DEVICE		"\n" \				MTP_TPI_CONTACT		"\n"#define MTP_TPI_SPLASH		MTP_TPI_DESCRIP		"\n" \				MTP_TPI_REVISION	"\n"#ifdef LINUXMODULE_AUTHOR(MTP_TPI_CONTACT);MODULE_DESCRIPTION(MTP_TPI_DESCRIP);MODULE_SUPPORTED_DEVICE(MTP_TPI_DEVICE);#ifdef MODULE_LICENSEMODULE_LICENSE(MTP_TPI_LICENSE);#endif				/* MODULE_LICENSE */#if defined MODULE_ALIASMODULE_ALIAS("streams-mtp_tpi");#endif#endif				/* LINUX */#ifdef LFS#define MTP_TPI_MOD_ID		CONFIG_STREAMS_MTP_TPI_MODID#define MTP_TPI_MOD_NAME	CONFIG_STREAMS_MTP_TPI_NAME#endif#define MOD_ID		MTP_TPI_MOD_ID#define MOD_NAME	MTP_TPI_MOD_NAME#ifdef MODULE#define MOD_BANNER	MTP_TPI_BANNER#else				/* MODULE */#define MOD_BANNER	MTP_TPI_SPLASH#endif				/* MODULE *//* *  ========================================================================= * *  MTP-TPI Private Structure * *  ========================================================================= */typedef struct mtp {	queue_t *rq;			/* RD queue */	queue_t *wq;			/* WR queue */	cred_t cred;	struct mtp_addr src;		/* srce address */	struct mtp_addr dst;		/* dest address */	size_t src_len;	size_t dst_len;	uint coninds;	struct {		mtp_ulong pvar;		mtp_ulong popt;		mtp_ulong sls;		/* default options */		mtp_ulong mp;		/* default options */		mtp_ulong debug;	/* default options */		mtp_ulong sls_mask;	} options;	struct T_info_ack prot;} mtp_t;#define MTP_PRIV(__q) ((struct mtp *)(__q)->q_ptr)static caddr_t mtp_opens = NULL;#define STRLOGST	1	/* log Stream state transitions */#define STRLOGTO	2	/* log Stream timeouts */#define STRLOGRX	3	/* log Stream primitives received */#define STRLOGTX	4	/* log Stream primitives issued */#define STRLOGTE	5	/* log Stream timer events */#define STRLOGDA	6	/* log Stream data *//* *  ========================================================================= * *  ADDRESS Handling * *  ========================================================================= */static inline fastcall size_tt_addr_size(struct mtp_addr *add){	size_t len = 0;	if (add) {		len = sizeof(struct sockaddr_mtp);	}	return (len);}static inline fastcall voidt_build_addr(struct mtp_addr *add, unsigned char *p){	if (add) {		struct sockaddr_mtp *sa = (typeof(sa)) p;		sa->mtp_family = 0;		sa->mtp_ni = add->ni;		sa->mtp_si = add->si;		sa->mtp_pc = add->pc;	}}/* *  ========================================================================= * *  OPTION Handling * *  ========================================================================= */typedef struct mtp_opts {	uint flags;			/* success flags */	mtp_ulong *sls;	mtp_ulong *mp;	mtp_ulong *debug;} mtp_opts_t;struct {	mtp_ulong sls;	mtp_ulong mp;	mtp_ulong debug;} opt_defaults = {0, 0, 0};#define _T_ALIGN_SIZEOF(s) \	((sizeof((s)) + _T_ALIGN_SIZE - 1) & ~(_T_ALIGN_SIZE - 1))static inline fastcall size_tt_opts_size(struct mtp_opts *ops){	size_t len = 0;	if (ops) {		const size_t hlen = sizeof(struct t_opthdr);	/* 32 bytes */		if (ops->sls)			len += hlen + _T_ALIGN_SIZEOF(*(ops->sls));		if (ops->mp)			len += hlen + _T_ALIGN_SIZEOF(*(ops->mp));		if (ops->debug)			len += hlen + _T_ALIGN_SIZEOF(*(ops->debug));	}	return (len);}static inline fastcall voidt_build_opts(struct mtp_opts *ops, unsigned char *p){	if (ops) {		struct t_opthdr *oh;		const size_t hlen = sizeof(struct t_opthdr);		if (ops->sls) {			oh = (typeof(oh)) p++;			oh->len = hlen + sizeof(*(ops->sls));			oh->level = T_SS7_MTP;			oh->name = T_MTP_SLS;			oh->status = (ops->flags & (1 << T_MTP_SLS)) ? T_SUCCESS : T_FAILURE;			*((typeof(ops->sls)) p) = *(ops->sls);			p += _T_ALIGN_SIZEOF(*ops->sls);		}		if (ops->mp) {			oh = (typeof(oh)) p++;			oh->len = hlen + sizeof(*(ops->mp));			oh->level = T_SS7_MTP;			oh->name = T_MTP_MP;			oh->status = (ops->flags & (1 << T_MTP_MP)) ? T_SUCCESS : T_FAILURE;			*((typeof(ops->mp)) p) = *(ops->mp);			p += _T_ALIGN_SIZEOF(*ops->mp);		}		if (ops->debug) {			oh = (typeof(oh)) p++;			oh->len = hlen + sizeof(*(ops->debug));			oh->level = T_SS7_MTP;			oh->name = T_MTP_DEBUG;			oh->status = (ops->flags & (1 << T_MTP_DEBUG)) ? T_SUCCESS : T_FAILURE;			*((typeof(ops->debug)) p) = *(ops->debug);			p += _T_ALIGN_SIZEOF(*ops->debug);		}	}}static intt_parse_opts(struct mtp_opts *ops, unsigned char *op, size_t len){	struct t_opthdr *oh;	for (oh = _T_OPT_FIRSTHDR_OFS(op, len, 0); oh; oh = _T_OPT_NEXTHDR_OFS(op, len, oh, 0)) {		switch (oh->level) {		case T_SS7_MTP:			switch (oh->name) {			case T_MTP_SLS:				ops->sls = (void *) _T_OPT_DATA_OFS(oh, 0);				ops->flags |= (1 << T_MTP_SLS);				continue;			case T_MTP_MP:				ops->mp = (void *) _T_OPT_DATA_OFS(oh, 0);				ops->flags |= (1 << T_MTP_MP);				continue;			case T_MTP_DEBUG:				ops->debug = (void *) _T_OPT_DATA_OFS(oh, 0);				ops->flags |= (1 << T_MTP_DEBUG);				continue;			}		}	}	if (oh)		return (TBADOPT);	return (0);}#if 0static intt_parse_qos(struct mtp_opts *ops, unsigned char *op, size_t len){	fixme(("Write this function\n"));	return (-EFAULT);}#endif/* *  ========================================================================= * *  OPTIONS handling * *  ========================================================================= */static intmtp_opt_check(struct mtp *mtp, struct mtp_opts *ops){	if (ops->flags) {		ops->flags = 0;		if (ops->sls)			ops->flags |= (1 << T_MTP_SLS);		if (ops->mp)			ops->flags |= (1 << T_MTP_MP);		if (ops->debug)			ops->flags |= (1 << T_MTP_DEBUG);	}	return (0);}static intmtp_opt_default(struct mtp *mtp, struct mtp_opts *ops){	if (ops) {		int flags = ops->flags;		ops->flags = 0;		if (!flags || ops->sls) {			ops->sls = &opt_defaults.sls;			ops->flags |= (1 << T_MTP_SLS);		}		if (!flags || ops->mp) {			ops->mp = &opt_defaults.mp;			ops->flags |= (1 << T_MTP_MP);		}		if (!flags || ops->debug) {			ops->debug = &opt_defaults.debug;			ops->flags |= (1 << T_MTP_DEBUG);		}		return (0);	}	swerr();	return (-EFAULT);}static intmtp_opt_current(struct mtp *mtp, struct mtp_opts *ops){	int flags = ops->flags;	ops->flags = 0;	if (!flags || ops->sls) {		ops->sls = &mtp->options.sls;		ops->flags |= (1 << T_MTP_SLS);	}	if (!flags || ops->mp) {		ops->mp = &mtp->options.mp;		ops->flags |= (1 << T_MTP_MP);	}	if (!flags || ops->debug) {		ops->debug = &mtp->options.debug;		ops->flags |= (1 << T_MTP_DEBUG);	}	return (0);}static intmtp_opt_negotiate(struct mtp *mtp, struct mtp_opts *ops){	if (ops->flags) {		ops->flags = 0;		if (ops->sls) {			mtp->options.sls = *ops->sls;			ops->sls = &mtp->options.sls;			ops->flags |= (1 << T_MTP_SLS);		}		if (ops->mp) {			mtp->options.mp = *ops->mp;			ops->mp = &mtp->options.mp;			ops->flags |= (1 << T_MTP_MP);		}		if (ops->debug) {			mtp->options.debug = *ops->debug;			ops->debug = &mtp->options.debug;			ops->flags |= (1 << T_MTP_DEBUG);		}	}	return (0);}/* *  ========================================================================= * *  STATE Changes * *  ========================================================================= */static const char *mtp_state(mtp_ulong state){	switch (state) {	case TS_UNBND:		return ("TS_UNBND");	case TS_WACK_BREQ:		return ("TS_WACK_BREQ");	case TS_WACK_UREQ:		return ("TS_WACK_UREQ");	case TS_IDLE:		return ("TS_IDLE");	case TS_WACK_OPTREQ:		return ("TS_WACK_OPTREQ");	case TS_WACK_CREQ:		return ("TS_WACK_CREQ");	case TS_WCON_CREQ:		return ("TS_WCON_CREQ");	case TS_WRES_CIND:		return ("TS_WRES_CIND");	case TS_WACK_CRES:		return ("TS_WACK_CRES");	case TS_DATA_XFER:		return ("TS_DATA_XFER");	case TS_WIND_ORDREL:		return ("TS_WIND_ORDREL");	case TS_WREQ_ORDREL:		return ("TS_WREQ_ORDREL");	case TS_WACK_DREQ6:		return ("TS_WACK_DREQ6");	case TS_WACK_DREQ7:		return ("TS_WACK_DREQ7");	case TS_WACK_DREQ9:		return ("TS_WACK_DREQ9");	case TS_WACK_DREQ10:		return ("TS_WACK_DREQ10");	case TS_WACK_DREQ11:		return ("TS_WACK_DREQ11");	case TS_NOSTATES:		return ("TS_UNINIT");	default:		return ("????");	}}static mtp_ulongmtp_set_state(struct mtp *mtp, mtp_ulong newstate){	mtp_ulong oldstate = mtp->prot.CURRENT_state;	if (newstate != oldstate) {		mi_strlog(mtp->rq, STRLOGST, SL_TRACE, "%s <- %s", mtp_state(newstate),			  mtp_state(oldstate));		mtp->prot.CURRENT_state = newstate;	}	return (oldstate);}static mtp_ulongmtp_get_state(struct mtp *mtp){	return mtp->prot.CURRENT_state;}static mtp_ulongmtp_get_statef(struct mtp *mtp){	return (1 << mtp_get_state(mtp));}static mtp_ulongmtp_chk_state(struct mtp *mtp, mtp_ulong mask){	return (mtp_get_statef(mtp) & mask);}static mtp_ulongmtp_not_state(struct mtp *mtp, mtp_ulong mask)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品啪在线观看国产60岁| 久久女同精品一区二区| 欧美xxxxxxxx| 一区二区三区小说| 国产美女久久久久| 欧美老年两性高潮| 亚洲欧洲精品天堂一级| 久久精品国产亚洲高清剧情介绍| 99国产欧美另类久久久精品| 欧美成人女星排行榜| 中文字幕亚洲不卡| 国产精品一品二品| 日韩视频免费观看高清完整版在线观看| 亚洲手机成人高清视频| 国产一区不卡精品| 欧美成人高清电影在线| 亚洲国产欧美日韩另类综合| va亚洲va日韩不卡在线观看| 久久毛片高清国产| 久久97超碰色| 欧美电影免费观看高清完整版在线观看 | 成人av网站免费观看| 日韩一级在线观看| 蜜臀av一区二区三区| 欧美日本在线播放| 午夜视频在线观看一区二区 | 欧美一区二区三区日韩| 一区二区三区在线不卡| 97国产精品videossex| 国产欧美精品国产国产专区| 精品一区二区三区在线观看国产| 欧美精品乱码久久久久久按摩| 一区二区三区四区在线| 色综合久久中文字幕综合网 | 色综合欧美在线视频区| 国产精品的网站| 91视频免费播放| 亚洲欧洲日产国码二区| www.欧美.com| 一区二区三区中文字幕| 欧美日韩一卡二卡三卡 | 国产精品综合一区二区三区| 久久久精品免费免费| 国产盗摄精品一区二区三区在线 | 成人av集中营| 国产精品盗摄一区二区三区| 成人高清免费观看| 一区二区三区中文在线| 91精品国产aⅴ一区二区| 久久99久久精品| 欧美国产日韩精品免费观看| 91热门视频在线观看| 亚洲成av人**亚洲成av**| 欧美夫妻性生活| 国产专区综合网| 亚洲视频中文字幕| 91精品综合久久久久久| 国产一区二区三区香蕉| 亚洲色图在线播放| 欧美一区二区视频在线观看2022| 国内成+人亚洲+欧美+综合在线| 中文字幕乱码一区二区免费| 欧美日韩在线播| 国产精品18久久久久久久久| 亚洲欧美区自拍先锋| 欧美丰满嫩嫩电影| 国产福利精品导航| 亚洲欧美综合另类在线卡通| 欧美肥妇free| 成人黄色777网| 蜜臀av在线播放一区二区三区| 国产欧美日韩另类一区| 精品视频一区三区九区| 狠狠色丁香久久婷婷综合丁香| 日韩美女视频一区| 精品卡一卡二卡三卡四在线| 在线一区二区观看| 国产在线精品一区二区不卡了| 一区二区在线观看免费视频播放| 精品久久久久久无| 91豆麻精品91久久久久久| 国产成人精品亚洲777人妖 | 欧美电视剧在线看免费| 91亚洲国产成人精品一区二区三| 毛片av中文字幕一区二区| 最好看的中文字幕久久| 精品国产a毛片| 欧美日韩国产免费| 99精品黄色片免费大全| 国产麻豆一精品一av一免费 | 亚洲精品视频自拍| 欧美精品一区男女天堂| 欧美日韩电影一区| 91美女在线看| 丁香婷婷深情五月亚洲| 国产一区二区三区电影在线观看| 亚洲成av人片一区二区| 亚洲一区影音先锋| 亚洲视频在线一区| 国产精品热久久久久夜色精品三区| 日韩午夜电影在线观看| 欧美日韩一区在线观看| 色婷婷av一区二区三区软件 | 欧美电影一区二区三区| 日本高清成人免费播放| 99精品在线免费| 成人app软件下载大全免费| 国产精品1024久久| 国产精品一区二区黑丝| 国产在线不卡一区| 韩国一区二区视频| 国产综合久久久久久鬼色| 麻豆成人久久精品二区三区红 | 一区二区三区在线免费观看| 国产精品免费视频一区| 中文在线资源观看网站视频免费不卡| 亚洲精品在线电影| 久久综合色之久久综合| 久久综合色天天久久综合图片| 久久久久国产精品厨房| 久久精品一区四区| 国产亚洲一区字幕| 国产精品美女久久久久久| 成人欧美一区二区三区在线播放| 国产精品国产三级国产| 亚洲视频免费在线观看| 夜夜爽夜夜爽精品视频| 亚洲午夜免费电影| 免费日韩伦理电影| 国产在线播精品第三| 国产毛片一区二区| 91在线码无精品| 日本韩国欧美一区| 日韩欧美在线1卡| 久久久综合视频| 亚洲免费毛片网站| 日韩中文字幕区一区有砖一区 | 午夜精品久久久久久久99樱桃| 日韩精品电影一区亚洲| 精品一区二区久久| a在线欧美一区| 欧美精品第一页| 国产日本一区二区| 亚洲午夜久久久久中文字幕久| 美女视频黄频大全不卡视频在线播放 | av激情亚洲男人天堂| 欧美在线不卡视频| 欧美变态口味重另类| 成人欧美一区二区三区小说| 亚洲高清不卡在线观看| 国产一级精品在线| 91蜜桃在线观看| 欧美r级电影在线观看| 自拍偷拍亚洲激情| 久久精品噜噜噜成人av农村| eeuss鲁一区二区三区| 欧美一区二区视频免费观看| 亚洲欧洲一区二区三区| 日产欧产美韩系列久久99| 国产成人超碰人人澡人人澡| 欧美日韩综合一区| 中文字幕乱码久久午夜不卡| 日韩精彩视频在线观看| a亚洲天堂av| 精品国产91亚洲一区二区三区婷婷| 亚洲免费观看视频| 国产精品一品二品| 日韩一区二区三区免费观看| 亚洲美腿欧美偷拍| 国产高清久久久| 精品久久久久久久久久久久包黑料 | 国产不卡视频一区二区三区| 欧美日韩一区久久| 最新成人av在线| 国产成人啪免费观看软件| 欧美日韩不卡在线| 亚洲视频免费在线观看| 国产精品一区二区久激情瑜伽| 337p亚洲精品色噜噜| 一区二区三区四区高清精品免费观看| 久久se这里有精品| 欧美二区乱c少妇| 亚洲国产视频a| 91久久精品网| 亚洲欧美激情在线| av不卡免费在线观看| 欧美国产97人人爽人人喊| 狠狠色伊人亚洲综合成人| 欧美一区二区三区免费大片| 性久久久久久久久久久久| 在线观看亚洲一区| 亚洲欧洲综合另类在线| 成人免费视频免费观看| 国产人伦精品一区二区| 国产精品一区二区无线| 久久精品夜色噜噜亚洲a∨| 精品无人区卡一卡二卡三乱码免费卡 | 麻豆国产一区二区| 精品区一区二区| 国产真实乱偷精品视频免|