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

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

?? main.c

?? 基于LINUX內核驅動的開發
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * *  BlueZ - Bluetooth protocol stack for Linux * *  Copyright (C) 2002-2003  Maxim Krasnyansky <maxk@qualcomm.com> *  Copyright (C) 2002-2008  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 as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA * */#ifdef HAVE_CONFIG_H#include <config.h>#endif#define _GNU_SOURCE#include <stdio.h>#include <errno.h>#include <fcntl.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <syslog.h>#include <signal.h>#include <getopt.h>#include <sys/poll.h>#include <sys/stat.h>#include <sys/types.h>#include <sys/socket.h>#include <bluetooth/bluetooth.h>#include <bluetooth/hci.h>#include <bluetooth/hci_lib.h>#include <bluetooth/l2cap.h>#include <bluetooth/bnep.h>#include "pand.h"#ifdef NEED_PPOLL#include "ppoll.h"#endifstatic uint16_t role    = BNEP_SVC_PANU;	/* Local role (ie service) */static uint16_t service = BNEP_SVC_NAP;		/* Remote service */static int detach = 1;static int persist;static int use_sdp = 1;static int use_cache;static int link_mode = 0;static int cleanup;static int search_duration = 10;static struct {	int      valid;	char     dst[40];	bdaddr_t bdaddr;} cache;static char netdev[16] = "bnep%d";static char *pidfile = NULL;static char *devupcmd = NULL;static char *devdowncmd = NULL;static bdaddr_t src_addr = *BDADDR_ANY;static int src_dev = -1;static volatile int terminate;static void do_kill(char *dst);enum {	NONE,	SHOW,	LISTEN,	CONNECT,	KILL} modes;struct script_arg {	char	dev[20];	char	dst[20];	int	sk;	int	nsk;};static void run_script(char *script, char *dev, char *dst, int sk, int nsk){	char *argv[4];	struct sigaction sa;	if (!script)		return;	if (access(script, R_OK | X_OK))		return;	if (fork())		return;	if (sk >= 0)		close(sk);	if (nsk >= 0)		close(nsk);	memset(&sa, 0, sizeof(sa));	sa.sa_handler = SIG_DFL;	sigaction(SIGCHLD, &sa, NULL);	sigaction(SIGPIPE, &sa, NULL);	argv[0] = script;	argv[1] = dev;	argv[2] = dst;	argv[3] = NULL;	execv(script, argv);	exit(1);}/* Wait for disconnect or error condition on the socket */static int w4_hup(int sk, struct script_arg *down_cmd){	struct pollfd pf;	sigset_t sigs;	int n;	sigfillset(&sigs);	sigdelset(&sigs, SIGCHLD);	sigdelset(&sigs, SIGPIPE);	sigdelset(&sigs, SIGTERM);	sigdelset(&sigs, SIGINT);	sigdelset(&sigs, SIGHUP);	while (!terminate) {		pf.fd = sk;		pf.events = POLLERR | POLLHUP;		n = ppoll(&pf, 1, NULL, &sigs);		if (n < 0) {			if (errno == EINTR || errno == EAGAIN)				continue;			syslog(LOG_ERR, "Poll failed. %s(%d)",						strerror(errno), errno);			return 1;		}		if (n) {			int err = 0;			socklen_t olen = sizeof(err);			getsockopt(sk, SOL_SOCKET, SO_ERROR, &err, &olen);			syslog(LOG_INFO, "%s disconnected%s%s", netdev,				err ? " : " : "", err ? strerror(err) : "");			if (down_cmd)				run_script(devdowncmd,						down_cmd->dev, down_cmd->dst,						down_cmd->sk, down_cmd->nsk);			close(sk);			return 0;		}	}	return 0;}static int do_listen(void){	struct l2cap_options l2o;	struct sockaddr_l2 l2a;	socklen_t olen;	int sk, lm;	if (use_sdp)		bnep_sdp_register(&src_addr, role);	/* Create L2CAP socket and bind it to PSM BNEP */	sk = socket(AF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP);	if (sk < 0) {		syslog(LOG_ERR, "Cannot create L2CAP socket. %s(%d)",						strerror(errno), errno);		return -1;	}	memset(&l2a, 0, sizeof(l2a));	l2a.l2_family = AF_BLUETOOTH;	bacpy(&l2a.l2_bdaddr, &src_addr);	l2a.l2_psm = htobs(BNEP_PSM);	if (bind(sk, (struct sockaddr *) &l2a, sizeof(l2a))) {		syslog(LOG_ERR, "Bind failed. %s(%d)",						strerror(errno), errno);		return -1;	}	/* Setup L2CAP options according to BNEP spec */	memset(&l2o, 0, sizeof(l2o));	olen = sizeof(l2o);	if (getsockopt(sk, SOL_L2CAP, L2CAP_OPTIONS, &l2o, &olen) < 0) {		syslog(LOG_ERR, "Failed to get L2CAP options. %s(%d)",						strerror(errno), errno);		return -1;	}	l2o.imtu = l2o.omtu = BNEP_MTU;	if (setsockopt(sk, SOL_L2CAP, L2CAP_OPTIONS, &l2o, sizeof(l2o)) < 0) {		syslog(LOG_ERR, "Failed to set L2CAP options. %s(%d)",						strerror(errno), errno);		return -1;	}	/* Set link mode */	lm = link_mode;	if (lm && setsockopt(sk, SOL_L2CAP, L2CAP_LM, &lm, sizeof(lm)) < 0) {		syslog(LOG_ERR, "Failed to set link mode. %s(%d)",						strerror(errno), errno);		return -1;	}	listen(sk, 10);	while (!terminate) {		socklen_t alen = sizeof(l2a);		char devname[16];		int nsk;		nsk = accept(sk, (struct sockaddr *) &l2a, &alen);		if (nsk < 0) {			syslog(LOG_ERR, "Accept failed. %s(%d)",						strerror(errno), errno);			continue;		}		switch (fork()) {		case 0:			break;		case -1:			syslog(LOG_ERR, "Fork failed. %s(%d)",						strerror(errno), errno);		default:			close(nsk);			continue;		}		strncpy(devname, netdev, 16);		devname[15] = '\0';		if (!bnep_accept_connection(nsk, role, devname)) {			char str[40];			struct script_arg down_cmd;			ba2str(&l2a.l2_bdaddr, str);			syslog(LOG_INFO, "New connection from %s at %s",								str, devname);			run_script(devupcmd, devname, str, sk, nsk);			memset(&down_cmd, 0, sizeof(struct script_arg));			strncpy(down_cmd.dev, devname, strlen(devname) + 1);			strncpy(down_cmd.dst, str, strlen(str) + 1);			down_cmd.sk = sk;			down_cmd.nsk = nsk;			w4_hup(nsk, &down_cmd);		} else {			syslog(LOG_ERR, "Connection failed. %s(%d)",						strerror(errno), errno);		}		close(nsk);		exit(0);	}	if (use_sdp)		bnep_sdp_unregister();	return 0;}/* Connect and initiate BNEP session * Returns: *   -1 - critical error (exit persist mode) *   1  - non critical error *   0  - success */static int create_connection(char *dst, bdaddr_t *bdaddr){	struct l2cap_options l2o;	struct sockaddr_l2 l2a;	socklen_t olen;	int sk, r = 0;	struct script_arg down_cmd;	syslog(LOG_INFO, "Connecting to %s", dst);	sk = socket(AF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP);	if (sk < 0) {		syslog(LOG_ERR, "Cannot create L2CAP socket. %s(%d)",						strerror(errno), errno);		return -1;	}	/* Setup L2CAP options according to BNEP spec */	memset(&l2o, 0, sizeof(l2o));	olen = sizeof(l2o);	getsockopt(sk, SOL_L2CAP, L2CAP_OPTIONS, &l2o, &olen);	l2o.imtu = l2o.omtu = BNEP_MTU;	setsockopt(sk, SOL_L2CAP, L2CAP_OPTIONS, &l2o, sizeof(l2o));	memset(&l2a, 0, sizeof(l2a));	l2a.l2_family = AF_BLUETOOTH;	bacpy(&l2a.l2_bdaddr, &src_addr);	if (bind(sk, (struct sockaddr *) &l2a, sizeof(l2a)))		syslog(LOG_ERR, "Bind failed. %s(%d)",						strerror(errno), errno);	memset(&l2a, 0, sizeof(l2a));	l2a.l2_family = AF_BLUETOOTH;	bacpy(&l2a.l2_bdaddr, bdaddr);	l2a.l2_psm = htobs(BNEP_PSM);	if (!connect(sk, (struct sockaddr *) &l2a, sizeof(l2a)) && 			!bnep_create_connection(sk, role, service, netdev)) {		syslog(LOG_INFO, "%s connected", netdev);		run_script(devupcmd, netdev, dst, sk, -1);		if (persist || devdowncmd) {				memset(&down_cmd, 0, sizeof(struct script_arg));				strncpy(down_cmd.dev, netdev, strlen(netdev) + 1);				strncpy(down_cmd.dst, dst, strlen(dst) + 1);				down_cmd.sk = sk;				down_cmd.nsk = -1;				w4_hup(sk, &down_cmd);			if (terminate && cleanup) {				syslog(LOG_INFO, "Disconnecting from %s.", dst);				do_kill(dst);			}		}		r = 0;	} else {		syslog(LOG_ERR, "Connect to %s failed. %s(%d)",						dst, strerror(errno), errno);		r = 1;	}	close(sk);	if (use_cache) {		if (!r) {			/* Succesesful connection, validate cache */			strcpy(cache.dst, dst);			bacpy(&cache.bdaddr, bdaddr);			cache.valid = use_cache;		} else			cache.valid--;	}	return r;}/* Search and connect * Returns: *   -1 - critical error (exit persist mode) *   1  - non critical error *   0  - success */static int do_connect(void){	inquiry_info *ii;	int reconnect = 0;	int i, n, r = 0;	do {		if (reconnect)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡免费追剧大全电视剧网站| 日韩精品一区在线| 国产一区在线看| 视频一区视频二区中文字幕| 欧美va在线播放| 91精品国产欧美一区二区18| 成人黄色小视频| 国产91在线|亚洲| 国产成人精品aa毛片| 午夜视频一区在线观看| 亚洲欧美成人一区二区三区| 国产精品美女久久久久aⅴ国产馆| 欧美成人bangbros| 日韩一区二区视频| 日韩一区二区在线观看视频| 99re亚洲国产精品| 国产成人无遮挡在线视频| 国产在线精品视频| 国产综合成人久久大片91| 麻豆精品久久精品色综合| 天天色天天爱天天射综合| 一区二区三区小说| 亚洲综合色网站| 亚洲123区在线观看| 午夜精品久久久久久| 午夜一区二区三区在线观看| 亚洲va韩国va欧美va精品| 中文字幕一区二区三区精华液 | 51精品秘密在线观看| 欧美另类z0zxhd电影| 欧美日本一区二区三区四区 | 欧美性大战久久久| 欧美日韩视频在线第一区| 91精品免费在线观看| 欧美成人女星排行榜| 国产亚洲一区字幕| 精品国产伦一区二区三区观看方式 | 欧美视频一区在线| 欧美亚州韩日在线看免费版国语版| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 中文字幕一区二区三区av | 亚洲午夜精品网| 日本91福利区| 国产aⅴ综合色| 91在线国产福利| 欧美精品一二三四| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲靠逼com| 日韩av不卡在线观看| 国产成人在线免费观看| 99re在线精品| 欧美一区二区三区视频免费播放 | 日韩一区和二区| 中文一区一区三区高中清不卡| 樱桃国产成人精品视频| 亚洲黄网站在线观看| 日av在线不卡| av不卡免费在线观看| 欧美日韩另类国产亚洲欧美一级| 欧美电影在线免费观看| 久久久亚洲精品石原莉奈| 亚洲欧美日韩一区| 日韩av二区在线播放| 成人开心网精品视频| 777午夜精品视频在线播放| 国产日韩欧美亚洲| 亚洲一二三四区不卡| 国产一区在线观看视频| 欧美性感一类影片在线播放| 久久久三级国产网站| 亚洲综合一二三区| 国产乱色国产精品免费视频| 91国产成人在线| 久久久久久97三级| 中文字幕欧美国产| 亚洲mv大片欧洲mv大片精品| 成人性生交大合| 欧美一级片在线看| 亚洲伦在线观看| 国产精品一区久久久久| 欧美日韩国产bt| 一区二区久久久久久| www.亚洲精品| 国产精品国产馆在线真实露脸| 韩国精品一区二区| 日韩欧美www| 日韩高清在线不卡| 欧美日韩国产片| 夜夜精品视频一区二区| 91在线精品一区二区三区| 国产精品成人免费精品自在线观看| 国产精品一色哟哟哟| 日韩免费高清电影| 青青草国产精品97视觉盛宴| 欧美视频在线观看一区二区| 一区二区三区**美女毛片| 色诱亚洲精品久久久久久| 亚洲图片你懂的| 波多野结衣中文字幕一区 | 五月天激情综合| 欧美三级乱人伦电影| 亚洲成av人片在线观看无码| 欧美伦理电影网| 亚洲最新视频在线播放| 欧美视频在线不卡| 日韩av中文字幕一区二区三区| 欧美日韩卡一卡二| 蜜臀va亚洲va欧美va天堂| 日韩欧美在线不卡| 国产一区二区三区四区五区美女 | 日本不卡一二三| 欧美一区2区视频在线观看| 免费成人在线影院| 欧美成人在线直播| 国产精品91一区二区| 国产精品久久久久久亚洲毛片 | 国产精品二三区| 色综合久久中文字幕| 亚洲愉拍自拍另类高清精品| 欧美日韩国产系列| 久久精品国产精品亚洲综合| 久久久久久久久久久久电影| 国产成人一区在线| 一区二区欧美精品| 欧美一区二区成人6969| 国产精品乡下勾搭老头1| 亚洲色欲色欲www在线观看| 欧美日韩精品是欧美日韩精品| 日本不卡123| 久久久国际精品| 一本大道久久a久久精二百| 肉肉av福利一精品导航| 2023国产精品| 99re热视频精品| 日韩不卡免费视频| 国产视频在线观看一区二区三区| 91小视频在线| 午夜久久久影院| www国产精品av| 91麻豆国产在线观看| 日韩国产欧美三级| 欧美激情在线一区二区三区| 91激情五月电影| 蓝色福利精品导航| 综合久久久久综合| 日韩写真欧美这视频| 国产精品888| 亚洲二区视频在线| 久久久99精品久久| 欧洲色大大久久| 国产精品一区二区不卡| 一个色在线综合| 久久日一线二线三线suv| 91国产精品成人| 国产经典欧美精品| 亚洲成va人在线观看| 国产日韩欧美激情| 欧美日韩在线免费视频| 国产黄色成人av| 蜜臀av在线播放一区二区三区| 国产精品久久看| 精品粉嫩超白一线天av| 欧美系列在线观看| 国产a久久麻豆| 蜜桃精品视频在线观看| 亚洲精品中文字幕在线观看| 久久日韩精品一区二区五区| 精品视频免费在线| 99热99精品| 国产高清亚洲一区| 麻豆91在线播放免费| 亚洲少妇30p| 中文字幕+乱码+中文字幕一区| 日韩一区二区三区电影 | 欧美一区二区三区免费观看视频| 99re亚洲国产精品| 丁香婷婷综合激情五月色| 另类小说综合欧美亚洲| 亚洲一区二区三区小说| 中文字幕一区二区三区四区| 久久久.com| 欧美v亚洲v综合ⅴ国产v| 欧美日韩国产高清一区二区| 色欧美日韩亚洲| 97久久久精品综合88久久| 成人一区在线观看| 美脚の诱脚舐め脚责91| 亚洲午夜视频在线观看| 成人欧美一区二区三区白人| 欧美极品另类videosde| 欧美成人乱码一区二区三区| 欧美日韩免费一区二区三区| 91视频一区二区三区| av电影在线观看完整版一区二区| 久久超碰97中文字幕| 久久99久久久欧美国产| 欧美aa在线视频| 男女男精品网站| 视频一区二区不卡| 亚洲国产一区二区三区|