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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sock.c

?? 優(yōu)龍2410linux2.6.8內(nèi)核源代碼
?? C
字號:
/*    HIDP implementation for Linux Bluetooth stack (BlueZ).   Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License version 2 as   published by the Free Software Foundation;   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.   IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY   CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.   ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,    COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS    SOFTWARE IS DISCLAIMED.*/#include <linux/config.h>#include <linux/module.h>#include <linux/types.h>#include <linux/errno.h>#include <linux/kernel.h>#include <linux/major.h>#include <linux/sched.h>#include <linux/slab.h>#include <linux/poll.h>#include <linux/fcntl.h>#include <linux/skbuff.h>#include <linux/socket.h>#include <linux/ioctl.h>#include <linux/file.h>#include <linux/init.h>#include <net/sock.h>#include "hidp.h"#ifndef CONFIG_BT_HIDP_DEBUG#undef  BT_DBG#define BT_DBG(D...)#endifstatic int hidp_sock_release(struct socket *sock){	struct sock *sk = sock->sk;	BT_DBG("sock %p sk %p", sock, sk);	if (!sk)		return 0;	sock_orphan(sk);	sock_put(sk);	return 0;}static int hidp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg){	void __user *argp = (void __user *) arg;	struct hidp_connadd_req ca;	struct hidp_conndel_req cd;	struct hidp_connlist_req cl;	struct hidp_conninfo ci;	struct socket *csock;	struct socket *isock;	int err;	BT_DBG("cmd %x arg %lx", cmd, arg);	switch (cmd) {	case HIDPCONNADD:		if (!capable(CAP_NET_ADMIN))			return -EACCES;		if (copy_from_user(&ca, argp, sizeof(ca)))			return -EFAULT;		csock = sockfd_lookup(ca.ctrl_sock, &err);		if (!csock)			return err;		isock = sockfd_lookup(ca.intr_sock, &err);		if (!isock) {			fput(csock->file);			return err;		}		if (csock->sk->sk_state != BT_CONNECTED || isock->sk->sk_state != BT_CONNECTED) {			fput(csock->file);			fput(isock->file);			return -EBADFD;		}		err = hidp_add_connection(&ca, csock, isock);		if (!err) {			if (copy_to_user(argp, &ca, sizeof(ca)))				err = -EFAULT;		} else {			fput(csock->file);			fput(isock->file);		}		return err;	case HIDPCONNDEL:		if (!capable(CAP_NET_ADMIN))			return -EACCES;		if (copy_from_user(&cd, argp, sizeof(cd)))			return -EFAULT;		return hidp_del_connection(&cd);	case HIDPGETCONNLIST:		if (copy_from_user(&cl, argp, sizeof(cl)))			return -EFAULT;		if (cl.cnum <= 0)			return -EINVAL;		err = hidp_get_connlist(&cl);		if (!err && copy_to_user(argp, &cl, sizeof(cl)))			return -EFAULT;		return err;	case HIDPGETCONNINFO:		if (copy_from_user(&ci, argp, sizeof(ci)))			return -EFAULT;		err = hidp_get_conninfo(&ci);		if (!err && copy_to_user(argp, &ci, sizeof(ci)))			return -EFAULT;		return err;	}	return -EINVAL;}static struct proto_ops hidp_sock_ops = {	.family		= PF_BLUETOOTH,	.owner		= THIS_MODULE,	.release	= hidp_sock_release,	.ioctl		= hidp_sock_ioctl,	.bind		= sock_no_bind,	.getname	= sock_no_getname,	.sendmsg	= sock_no_sendmsg,	.recvmsg	= sock_no_recvmsg,	.poll		= sock_no_poll,	.listen		= sock_no_listen,	.shutdown	= sock_no_shutdown,	.setsockopt	= sock_no_setsockopt,	.getsockopt	= sock_no_getsockopt,	.connect	= sock_no_connect,	.socketpair	= sock_no_socketpair,	.accept		= sock_no_accept,	.mmap		= sock_no_mmap};static int hidp_sock_create(struct socket *sock, int protocol){	struct sock *sk;	BT_DBG("sock %p", sock);	if (sock->type != SOCK_RAW)		return -ESOCKTNOSUPPORT;	if (!(sk = bt_sock_alloc(sock, PF_BLUETOOTH, 0, GFP_KERNEL)))		return -ENOMEM;	sk_set_owner(sk, THIS_MODULE);	sock->ops = &hidp_sock_ops;	sock->state = SS_UNCONNECTED;	sk->sk_destruct = NULL;	sk->sk_protocol = protocol;	return 0;}static struct net_proto_family hidp_sock_family_ops = {	.family	= PF_BLUETOOTH,	.owner	= THIS_MODULE,	.create	= hidp_sock_create};int __init hidp_init_sockets(void){	int err;	err = bt_sock_register(BTPROTO_HIDP, &hidp_sock_family_ops);	if (err < 0)		BT_ERR("Can't register HIDP socket");	return err;}void __exit hidp_cleanup_sockets(void){	if (bt_sock_unregister(BTPROTO_HIDP) < 0)		BT_ERR("Can't unregister HIDP socket");}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区免费不卡| 欧美成人bangbros| 日韩一区二区免费在线观看| 国产亚洲成av人在线观看导航| 一区二区三区国产精华| 国产一区二区三区在线观看精品| 欧美午夜电影在线播放| 国产亚洲欧美色| 免费一级片91| 91精品久久久久久蜜臀| 亚洲另类一区二区| av一区二区三区黑人| 久久久久久久久久久久电影| 日韩激情一二三区| 在线日韩一区二区| 1024成人网色www| 成人动漫一区二区| 国产精品天干天干在线综合| 国产一区二区三区日韩| 欧美变态凌虐bdsm| 久久se精品一区精品二区| 欧美日韩国产高清一区二区| 一区二区免费看| 一本色道久久综合精品竹菊| 欧美国产一区二区| 成人污视频在线观看| 国产亚洲美州欧州综合国| 精品一区二区三区影院在线午夜| 欧美老肥妇做.爰bbww| 亚洲成人综合在线| 欧美精品一二三| 丝袜美腿亚洲色图| 91精品在线一区二区| 日韩av电影免费观看高清完整版在线观看| 色老汉一区二区三区| 亚洲国产一区二区三区| 欧美日韩一级二级三级| 青青草国产成人av片免费| 日韩一区二区三区免费观看| 久久成人免费日本黄色| 日韩精品一区二区三区四区视频 | 欧美一级片在线| 蜜臀av一区二区| 久久久亚洲精品一区二区三区| 国产精品资源在线看| 国产精品国产自产拍高清av王其| 成人午夜在线视频| 亚洲激情欧美激情| 宅男在线国产精品| 国产精品1区二区.| 最新中文字幕一区二区三区 | 亚洲图片欧美视频| 欧美一区二区久久| 国产成人av电影| 亚洲黄色片在线观看| 欧美私模裸体表演在线观看| 免播放器亚洲一区| 国产精品三级av| 欧美日韩一区二区不卡| 国模冰冰炮一区二区| 中文字幕中文乱码欧美一区二区| 92精品国产成人观看免费 | 日韩午夜av一区| 国产69精品一区二区亚洲孕妇 | 99re在线精品| 日本美女一区二区三区| 亚洲国产成人午夜在线一区| 欧美丝袜自拍制服另类| 国产黄色91视频| 亚洲1区2区3区视频| 久久蜜臀中文字幕| 91豆麻精品91久久久久久| 精品在线亚洲视频| 亚洲综合色区另类av| 欧美精品一区二区久久婷婷| 97久久久精品综合88久久| 麻豆国产91在线播放| 亚洲激情校园春色| 久久久高清一区二区三区| 欧美喷水一区二区| 91亚洲精华国产精华精华液| 久久精品国产999大香线蕉| 一区二区三区日本| 久久综合国产精品| 91精品国产aⅴ一区二区| a级高清视频欧美日韩| 日本视频一区二区| 一区二区免费看| 国产精品黄色在线观看 | 欧美亚洲禁片免费| 成人免费观看av| 国内外精品视频| 日韩电影免费一区| 亚洲在线免费播放| 亚洲免费三区一区二区| 国产精品久久久久影院亚瑟| 欧美精品一区二区在线观看| 91麻豆精品国产91久久久久| 欧美日韩在线播放| 色婷婷av一区二区三区之一色屋| 国产河南妇女毛片精品久久久| 免费观看日韩电影| 日韩成人av影视| 日本美女视频一区二区| 亚洲va韩国va欧美va精品| 一区二区三区鲁丝不卡| 亚洲精品视频在线| 一区二区三区欧美日| 亚洲日本电影在线| 亚洲美女淫视频| 亚洲男女毛片无遮挡| 一区二区三区在线观看欧美| 亚洲特级片在线| 亚洲黄色小视频| 亚洲精选免费视频| 亚洲影视在线观看| 亚洲国产精品综合小说图片区| 亚洲成人动漫在线观看| 日韩成人dvd| 久久99精品久久久久久动态图| 美女视频第一区二区三区免费观看网站| 亚洲二区在线观看| 日韩激情av在线| 国产一区啦啦啦在线观看| 国产精品综合一区二区| 成人三级伦理片| 色呦呦一区二区三区| 欧美日韩综合不卡| 日韩欧美三级在线| 国产拍揄自揄精品视频麻豆| 中文字幕 久热精品 视频在线| 国产精品久久久久aaaa樱花| 亚洲欧美色综合| 天堂在线一区二区| 国产一区免费电影| 色婷婷综合久久久| 日韩欧美视频在线| 国产精品久久久久影视| 亚洲综合视频在线| 韩国v欧美v日本v亚洲v| 91女人视频在线观看| 在线电影欧美成精品| 久久蜜桃av一区二区天堂| 亚洲欧美日韩系列| 老司机免费视频一区二区| 国产成人一区在线| 在线免费一区三区| 久久久蜜桃精品| 一级日本不卡的影视| 国产在线播放一区| 色先锋资源久久综合| 日韩欧美亚洲一区二区| 国产精品黄色在线观看| 蜜乳av一区二区三区| 99麻豆久久久国产精品免费优播| 欧美日韩免费视频| 国产精品天美传媒沈樵| 欧美aa在线视频| 成年人国产精品| 日韩一区二区三区电影在线观看| 中文字幕亚洲欧美在线不卡| 蜜芽一区二区三区| 91看片淫黄大片一级| 欧美精品一区二区精品网| 亚洲一区二区三区三| 国产精品1区2区3区在线观看| 欧美亚洲国产一区二区三区| 国产午夜一区二区三区| 日本美女一区二区三区视频| 91视频一区二区三区| 久久久99精品久久| 秋霞国产午夜精品免费视频| 色欧美日韩亚洲| 国产日韩影视精品| 久久99久国产精品黄毛片色诱| 欧洲人成人精品| 中文字幕亚洲一区二区av在线| 韩国女主播成人在线| 91精品国产手机| 五月天婷婷综合| 欧洲一区二区三区在线| 亚洲美女视频一区| 色欲综合视频天天天| 亚洲欧洲成人av每日更新| 丁香桃色午夜亚洲一区二区三区| 欧美一区三区二区| 日本麻豆一区二区三区视频| 欧美日韩成人在线一区| 亚洲国产精品久久一线不卡| 99re成人在线| 亚洲免费观看高清在线观看| 99精品热视频| 亚洲免费在线播放| 欧美在线视频日韩| 一区二区三区产品免费精品久久75| 91麻豆福利精品推荐| 亚洲男女一区二区三区| 在线观看www91| 五月激情六月综合| 欧美一区二区三区在|