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

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

?? server.c

?? 基于LINUX內核驅動的開發
?? C
字號:
/* * *  BlueZ - Bluetooth protocol stack for Linux * *  Copyright (C) 2001-2002  Nokia Corporation *  Copyright (C) 2002-2003  Maxim Krasnyansky <maxk@qualcomm.com> *  Copyright (C) 2002-2008  Marcel Holtmann <marcel@holtmann.org> *  Copyright (C) 2002-2003  Stephen Crane <steve.crane@rococosoft.com> * * *  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#include <stdio.h>#include <errno.h>#include <unistd.h>#include <stdlib.h>#include <sys/stat.h>#include <sys/socket.h>#include <bluetooth/bluetooth.h>#include <bluetooth/l2cap.h>#include <bluetooth/sdp.h>#include <bluetooth/sdp_lib.h>#include <sys/un.h>#include <netinet/in.h>#include <glib.h>#include "logging.h"#include "sdpd.h"static GIOChannel *l2cap_io = NULL, *unix_io = NULL;static int l2cap_sock, unix_sock;/* * SDP server initialization on startup includes creating the * l2cap and unix sockets over which discovery and registration clients * access us respectively */static int init_server(uint16_t mtu, int master, int compat){	struct l2cap_options opts;	struct sockaddr_l2 l2addr;	struct sockaddr_un unaddr;	socklen_t optlen;	/* Register the public browse group root */	register_public_browse_group();	/* Register the SDP server's service record */	register_server_service();	/* Create L2CAP socket */	l2cap_sock = socket(PF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP);	if (l2cap_sock < 0) {		error("opening L2CAP socket: %s", strerror(errno));		return -1;	}	memset(&l2addr, 0, sizeof(l2addr));	l2addr.l2_family = AF_BLUETOOTH;	bacpy(&l2addr.l2_bdaddr, BDADDR_ANY);	l2addr.l2_psm = htobs(SDP_PSM);	if (bind(l2cap_sock, (struct sockaddr *) &l2addr, sizeof(l2addr)) < 0) {		error("binding L2CAP socket: %s", strerror(errno));		return -1;	}	if (master) {		int opt = L2CAP_LM_MASTER;		if (setsockopt(l2cap_sock, SOL_L2CAP, L2CAP_LM, &opt, sizeof(opt)) < 0) {			error("setsockopt: %s", strerror(errno));			return -1;		}	}	if (mtu > 0) {		memset(&opts, 0, sizeof(opts));		optlen = sizeof(opts);		if (getsockopt(l2cap_sock, SOL_L2CAP, L2CAP_OPTIONS, &opts, &optlen) < 0) {			error("getsockopt: %s", strerror(errno));			return -1;		}		opts.omtu = mtu;		opts.imtu = mtu;		if (setsockopt(l2cap_sock, SOL_L2CAP, L2CAP_OPTIONS, &opts, sizeof(opts)) < 0) {			error("setsockopt: %s", strerror(errno));			return -1;		}	}	listen(l2cap_sock, 5);	if (!compat) {		unix_sock = -1;		return 0;	}	/* Create local Unix socket */	unix_sock = socket(PF_UNIX, SOCK_STREAM, 0);	if (unix_sock < 0) {		error("opening UNIX socket: %s", strerror(errno));		return -1;	}	memset(&unaddr, 0, sizeof(unaddr));	unaddr.sun_family = AF_UNIX;	strcpy(unaddr.sun_path, SDP_UNIX_PATH);	unlink(unaddr.sun_path);	if (bind(unix_sock, (struct sockaddr *) &unaddr, sizeof(unaddr)) < 0) {		error("binding UNIX socket: %s", strerror(errno));		return -1;	}	listen(unix_sock, 5);	chmod(SDP_UNIX_PATH, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);	return 0;}static gboolean io_session_event(GIOChannel *chan, GIOCondition cond, gpointer data){	sdp_pdu_hdr_t hdr;	uint8_t *buf;	int sk, len, size;	if (cond & (G_IO_HUP | G_IO_ERR | G_IO_NVAL))		return FALSE;	sk = g_io_channel_unix_get_fd(chan);	len = recv(sk, &hdr, sizeof(sdp_pdu_hdr_t), MSG_PEEK);	if (len <= 0) {		sdp_svcdb_collect_all(sk);		return FALSE;	}	size = sizeof(sdp_pdu_hdr_t) + ntohs(hdr.plen);	buf = malloc(size);	if (!buf)		return TRUE;	len = recv(sk, buf, size, 0);	if (len <= 0) {		sdp_svcdb_collect_all(sk);		return FALSE;	}			handle_request(sk, buf, len);	return TRUE;}static gboolean io_accept_event(GIOChannel *chan, GIOCondition cond, gpointer data){	GIOChannel *io;	int nsk;	if (cond & (G_IO_HUP | G_IO_ERR | G_IO_NVAL)) {		g_io_channel_unref(chan);		return FALSE;	}	if (data == &l2cap_sock) {		struct sockaddr_l2 addr;		socklen_t len = sizeof(addr);		nsk = accept(l2cap_sock, (struct sockaddr *) &addr, &len);	} else if (data == &unix_sock) {		struct sockaddr_un addr;		socklen_t len = sizeof(addr);		nsk = accept(unix_sock, (struct sockaddr *) &addr, &len);	} else		return FALSE;	if (nsk < 0) {		error("Can't accept connection: %s", strerror(errno));		return TRUE;	}	io = g_io_channel_unix_new(nsk);	g_io_channel_set_close_on_unref(io, TRUE);	g_io_add_watch(io, G_IO_IN | G_IO_ERR | G_IO_HUP | G_IO_NVAL,					io_session_event, data);	g_io_channel_unref(io);	return TRUE;}int start_sdp_server(uint16_t mtu, const char *did, uint32_t flags){	int compat = flags & SDP_SERVER_COMPAT;	int master = flags & SDP_SERVER_MASTER;	info("Starting SDP server");	if (init_server(mtu, master, compat) < 0) {		error("Server initialization failed");		return -1;	}	if (did && strlen(did) > 0) {		const char *ptr = did;		uint16_t vid = 0x0000, pid = 0x0000, ver = 0x0000;		vid = (uint16_t) strtol(ptr, NULL, 16);		ptr = strchr(ptr, ':');		if (ptr) {			pid = (uint16_t) strtol(ptr + 1, NULL, 16);			ptr = strchr(ptr + 1, ':');			if (ptr)				ver = (uint16_t) strtol(ptr + 1, NULL, 16);			register_device_id(vid, pid, ver);		}	}	l2cap_io = g_io_channel_unix_new(l2cap_sock);	g_io_channel_set_close_on_unref(l2cap_io, TRUE);	g_io_add_watch(l2cap_io, G_IO_IN | G_IO_ERR | G_IO_HUP | G_IO_NVAL,					io_accept_event, &l2cap_sock);	if (compat && unix_sock > fileno(stderr)) {		unix_io = g_io_channel_unix_new(unix_sock);		g_io_channel_set_close_on_unref(unix_io, TRUE);		g_io_add_watch(unix_io, G_IO_IN | G_IO_ERR | G_IO_HUP | G_IO_NVAL,					io_accept_event, &unix_sock);	}	return 0;}void stop_sdp_server(void){	info("Stopping SDP server");	sdp_svcdb_reset();	if (unix_io)		g_io_channel_unref(unix_io);	if (l2cap_io)		g_io_channel_unref(l2cap_io);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆91在线播放免费| 99久久婷婷国产| av一二三不卡影片| 91精品国产乱码| 一区二区三区在线播| 国产不卡高清在线观看视频| 欧美日本乱大交xxxxx| 亚洲丝袜另类动漫二区| 国产在线精品一区在线观看麻豆| 欧美午夜影院一区| 国产精品久久久久影院亚瑟| 蜜臀av一区二区三区| 欧美三级中文字幕在线观看| 国产精品久久久久四虎| 国产精品影音先锋| 欧美成人女星排名| 日韩av在线发布| 欧美久久久一区| 日韩美女视频一区| 99精品久久只有精品| 国产欧美久久久精品影院| 另类中文字幕网| 337p亚洲精品色噜噜| 亚洲一区免费视频| 欧美中文字幕一二三区视频| 综合av第一页| 99久久国产综合精品女不卡| 最新不卡av在线| a级高清视频欧美日韩| 亚洲国产岛国毛片在线| 国产不卡在线视频| 国产亚洲污的网站| 国产成人av网站| 国产欧美一区二区三区鸳鸯浴 | 久久国产精品露脸对白| 7777精品伊人久久久大香线蕉的| 亚洲妇熟xx妇色黄| 欧美精品一二三区| 秋霞电影网一区二区| 欧美大片免费久久精品三p| 免费成人在线观看| 欧美国产一区二区在线观看 | 国产精品久久久久久久久免费桃花| 国产高清精品久久久久| 国产欧美日韩三级| 91在线丨porny丨国产| 亚洲女人的天堂| 欧美精品第1页| 精品一区二区日韩| 国产精品久久看| 欧美综合亚洲图片综合区| 日韩成人伦理电影在线观看| 精品久久人人做人人爰| 懂色av一区二区三区免费看| 中文字幕一区二区在线播放| 欧美午夜免费电影| 韩国毛片一区二区三区| 日韩一区有码在线| 91精品国产综合久久久久久久久久 | 国产精品区一区二区三| 在线国产电影不卡| 九色综合国产一区二区三区| 国产精品不卡在线| 欧美日韩视频在线第一区| 国产美女精品一区二区三区| 亚洲精品欧美二区三区中文字幕| 欧美精品少妇一区二区三区| 国产老妇另类xxxxx| 亚洲精品乱码久久久久| 精品国产一区二区三区久久影院| proumb性欧美在线观看| 日韩高清一级片| 国产精品久久久久9999吃药| 欧美一区二区在线播放| 99久久综合99久久综合网站| 日韩一区精品字幕| 亚洲天堂久久久久久久| 欧美va亚洲va| 欧美日韩成人在线| 99久久伊人精品| 狠狠色丁香久久婷婷综| 午夜精品福利视频网站| 中文字幕在线一区| 精品国产a毛片| 91精品国产91综合久久蜜臀| 99久久99精品久久久久久| 久久电影国产免费久久电影| 亚洲国产视频在线| √…a在线天堂一区| 久久午夜国产精品| 日韩视频在线永久播放| 欧洲一区在线电影| 成人深夜在线观看| 国产乱子轮精品视频| 丝袜亚洲另类欧美| 一区二区三区四区视频精品免费 | 亚洲欧美二区三区| 国产精品久久久久一区二区三区| 欧美xxxxxxxx| 日韩免费视频一区| 日韩精品资源二区在线| 91精品国产免费久久综合| 欧美亚洲动漫另类| 色视频欧美一区二区三区| 99久久久久久99| 成人avav在线| av电影一区二区| 99久久精品情趣| 色综合久久久久久久久久久| 成人免费观看视频| 不卡的电视剧免费网站有什么| 国产精品一区二区黑丝| 国产福利91精品一区| 国产精品资源网站| 成人激情午夜影院| av资源网一区| 在线免费av一区| 欧美少妇一区二区| 欧美一级免费大片| 日韩免费高清av| 久久精品视频在线免费观看| 国产精品久线在线观看| 亚洲婷婷综合久久一本伊一区| 亚洲老妇xxxxxx| 亚洲一卡二卡三卡四卡 | 亚洲精品免费视频| 夜夜嗨av一区二区三区四季av| 夜夜嗨av一区二区三区| 天天av天天翘天天综合网| 三级在线观看一区二区| 精品一区二区免费| 粉嫩嫩av羞羞动漫久久久| av一二三不卡影片| 91在线一区二区| 欧美日韩一区小说| 精品日韩一区二区| 国产精品美女一区二区| 亚洲一区影音先锋| 精品一区二区三区免费毛片爱| 成人激情免费网站| 欧美日高清视频| 国产亚洲人成网站| 亚洲午夜电影在线观看| 韩国v欧美v亚洲v日本v| 色婷婷久久久久swag精品| 91精品国产91久久久久久一区二区| 欧美精品一区二区不卡| 亚洲专区一二三| 国产一区激情在线| 日本黄色一区二区| 久久―日本道色综合久久| 亚洲欧美激情视频在线观看一区二区三区 | 欧美人与禽zozo性伦| 久久久三级国产网站| 一区二区三区欧美激情| 国产最新精品免费| 欧洲色大大久久| 久久久www成人免费无遮挡大片 | 欧美日韩黄色影视| 日本一区二区成人在线| 奇米亚洲午夜久久精品| 色狠狠桃花综合| 久久精品视频网| 青青草伊人久久| 欧美中文字幕一区二区三区亚洲| 久久青草国产手机看片福利盒子 | 欧美精品免费视频| 国产精品美女一区二区| 美腿丝袜亚洲三区| 欧美亚洲丝袜传媒另类| 中文在线资源观看网站视频免费不卡 | 日韩视频一区二区在线观看| 综合av第一页| 国产成人午夜视频| 欧美videofree性高清杂交| 亚洲国产精品影院| 日本韩国视频一区二区| 国产精品你懂的在线| 国产精品18久久久久久久久| 欧美一区二区三区白人| 亚洲在线免费播放| 91视频91自| **性色生活片久久毛片| av欧美精品.com| 国产精品久久久久精k8| 国产不卡视频在线播放| 国产亚洲欧美日韩日本| 美女脱光内衣内裤视频久久影院| 欧美日韩高清影院| 亚洲综合一区二区精品导航| 99国产精品久久久久久久久久| 国产三级一区二区三区| 国产麻豆精品在线| 久久久久久电影| 成人一区二区视频| 国产拍欧美日韩视频二区| 成人免费视频视频| 国产精品免费观看视频| 91女厕偷拍女厕偷拍高清| 亚洲精品成人悠悠色影视|