Home | History | Annotate | Download | only in common

Lines Matching full:sock

149 		int err = 0, sock = g_io_channel_unix_get_fd(io);
152 if (getsockopt(sock, SOL_SOCKET, SO_ERROR, &err, &len) < 0)
255 static int l2cap_bind(int sock, const bdaddr_t *src, uint16_t psm)
264 return bind(sock, (struct sockaddr *) &addr, sizeof(addr));
267 static int l2cap_connect(int sock, const bdaddr_t *dst, uint16_t psm)
277 err = connect(sock, (struct sockaddr *) &addr, sizeof(addr));
284 static int l2cap_set_master(int sock, int master)
290 if (getsockopt(sock, SOL_L2CAP, L2CAP_LM, &flags, &len) < 0)
303 if (setsockopt(sock, SOL_L2CAP, L2CAP_LM, &flags, sizeof(flags)) < 0)
309 static int rfcomm_set_master(int sock, int master)
315 if (getsockopt(sock, SOL_RFCOMM, RFCOMM_LM, &flags, &len) < 0)
328 if (setsockopt(sock, SOL_RFCOMM, RFCOMM_LM, &flags, sizeof(flags)) < 0)
334 static int l2cap_set_lm(int sock, int level)
343 if (setsockopt(sock, SOL_L2CAP, L2CAP_LM, &opt, sizeof(opt)) < 0)
349 static int rfcomm_set_lm(int sock, int level)
358 if (setsockopt(sock, SOL_RFCOMM, RFCOMM_LM, &opt, sizeof(opt)) < 0)
364 static gboolean set_sec_level(int sock, BtIOType type, int level, GError **err)
379 if (setsockopt(sock, SOL_BLUETOOTH, BT_SECURITY, &sec,
389 ret = l2cap_set_lm(sock, level);
391 ret = rfcomm_set_lm(sock, level);
401 static int l2cap_get_lm(int sock, int *sec_level)
407 if (getsockopt(sock, SOL_L2CAP, L2CAP_LM, &opt, &len) < 0)
422 static int rfcomm_get_lm(int sock, int *sec_level)
428 if (getsockopt(sock, SOL_RFCOMM, RFCOMM_LM, &opt, &len) < 0)
443 static gboolean get_sec_level(int sock, BtIOType type, int *level,
452 if (getsockopt(sock, SOL_BLUETOOTH, BT_SECURITY, &sec, &len) == 0) {
463 ret = l2cap_get_lm(sock, level);
465 ret = rfcomm_get_lm(sock, level);
475 static gboolean l2cap_set(int sock, int sec_level, uint16_t imtu,
484 if (getsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, &l2o,
495 if (setsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, &l2o,
502 if (master >= 0 && l2cap_set_master(sock, master) < 0) {
507 if (sec_level && !set_sec_level(sock, BT_IO_L2CAP, sec_level, err))
513 static int rfcomm_bind(int sock, const bdaddr_t *src, uint8_t channel)
522 return bind(sock, (struct sockaddr *) &addr, sizeof(addr));
525 static int rfcomm_connect(int sock, const bdaddr_t *dst, uint8_t channel)
535 err = connect(sock, (struct sockaddr *) &addr, sizeof(addr));
542 static gboolean rfcomm_set(int sock, int sec_level, int master, GError **err)
544 if (sec_level && !set_sec_level(sock, BT_IO_RFCOMM, sec_level, err))
547 if (master >= 0 && rfcomm_set_master(sock, master) < 0) {
555 static int sco_bind(int sock, const bdaddr_t *src)
563 return bind(sock, (struct sockaddr *) &addr, sizeof(addr));
566 static int sco_connect(int sock, const bdaddr_t *dst)
575 err = connect(sock, (struct sockaddr *) &addr, sizeof(addr));
582 static gboolean sco_set(int sock, uint16_t mtu, GError **err)
592 if (getsockopt(sock, SOL_SCO, SCO_OPTIONS, &sco_opt, &len) < 0) {
598 if (setsockopt(sock, SOL_SCO, SCO_OPTIONS, &sco_opt,
679 static gboolean get_peers(int sock, struct sockaddr *src, struct sockaddr *dst,
686 if (getsockname(sock, src, &olen) < 0) {
693 if (getpeername(sock, dst, &olen) < 0) {
701 static int l2cap_get_info(int sock, uint16_t *handle, uint8_t *dev_class)
707 if (getsockopt(sock, SOL_L2CAP, L2CAP_CONNINFO, &info, &len) < 0)
719 static gboolean l2cap_get(int sock, GError **err, BtIOOption opt1,
732 if (getsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, &l2o, &len) < 0) {
737 if (!get_peers(sock, (struct sockaddr *) &src,
757 if (getsockopt(sock, SOL_BLUETOOTH, BT_DEFER_SETUP,
765 if (!get_sec_level(sock, BT_IO_L2CAP,
781 if (getsockopt(sock, SOL_L2CAP, L2CAP_LM, &flags,
791 if (l2cap_get_info(sock, &handle, dev_class) < 0) {
798 if (l2cap_get_info(sock, &handle, dev_class) < 0) {
816 static int rfcomm_get_info(int sock, uint16_t *handle, uint8_t *dev_class)
822 if (getsockopt(sock, SOL_RFCOMM, RFCOMM_CONNINFO, &info, &len) < 0)
834 static gboolean rfcomm_get(int sock, GError **err, BtIOOption opt1,
844 if (!get_peers(sock, (struct sockaddr *) &src,
864 if (getsockopt(sock, SOL_BLUETOOTH, BT_DEFER_SETUP,
872 if (!get_sec_level(sock, BT_IO_RFCOMM,
882 if (getsockopt(sock, SOL_RFCOMM, RFCOMM_LM, &flags,
892 if (rfcomm_get_info(sock, &handle, dev_class) < 0) {
899 if (rfcomm_get_info(sock, &handle, dev_class) < 0) {
917 static int sco_get_info(int sock, uint16_t *handle, uint8_t *dev_class)
923 if (getsockopt(sock, SOL_SCO, SCO_CONNINFO, &info, &len) < 0)
935 static gboolean sco_get(int sock, GError **err, BtIOOption opt1, va_list args)
946 if (getsockopt(sock, SOL_SCO, SCO_OPTIONS, &sco_opt, &len) < 0) {
951 if (!get_peers(sock, (struct sockaddr *) &src,
975 if (sco_get_info(sock, &handle, dev_class) < 0) {
982 if (sco_get_info(sock, &handle, dev_class) < 0) {
1003 int sock;
1005 sock = g_io_channel_unix_get_fd(io);
1010 return l2cap_get(sock, err, opt1, args);
1012 return rfcomm_get(sock, err, opt1, args);
1014 return sco_get(sock, err, opt1, args);
1025 int sock;
1029 sock = g_io_channel_unix_get_fd(io);
1032 pfd.fd = sock;
1042 ret = read(sock, &c, 1);
1056 int sock;
1065 sock = g_io_channel_unix_get_fd(io);
1070 return l2cap_set(sock, opts.sec_level, opts.imtu, opts.omtu,
1073 return rfcomm_set(sock, opts.sec_level, opts.master, err);
1075 return sco_set(sock, opts.mtu, err);
1099 int sock;
1104 sock = socket(PF_BLUETOOTH, SOCK_RAW, BTPROTO_L2CAP);
1105 if (sock < 0) {
1109 if (l2cap_bind(sock, &opts->src, server ? opts->psm : 0) < 0) {
1113 if (!l2cap_set(sock, opts->sec_level, 0, 0, -1, err))
1117 sock = socket(PF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP);
1118 if (sock < 0) {
1122 if (l2cap_bind(sock, &opts->src, server ? opts->psm : 0) < 0) {
1126 if (!l2cap_set(sock, opts->sec_level, opts->imtu, opts->omtu,
1131 sock = socket(PF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
1132 if (sock < 0) {
1136 if (rfcomm_bind(sock, &opts->src,
1141 if (!rfcomm_set(sock, opts->sec_level, opts->master, err))
1145 sock = socket(PF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_SCO);
1146 if (sock < 0) {
1150 if (sco_bind(sock, &opts->src) < 0) {
1154 if (!sco_set(sock, opts->mtu, err))
1163 io = g_io_channel_unix_new(sock);
1178 int err, sock;
1192 sock = g_io_channel_unix_get_fd(io);
1196 err = l2cap_connect(sock, &opts.dst, 0);
1199 err = l2cap_connect(sock, &opts.dst, opts.psm);
1202 err = rfcomm_connect(sock, &opts.dst, opts.channel);
1205 err = sco_connect(sock, &opts.dst);
1233 int sock;
1253 sock = g_io_channel_unix_get_fd(io);
1256 setsockopt(sock, SOL_BLUETOOTH, BT_DEFER_SETUP, &opts.defer,
1259 if (listen(sock, 5) < 0) {