[Bluez-devel] Error while setting RFCOMM security options

Julien Campana
2004-05-11T14:27:38Z

Hi!

I'm trying to connect to a device over RFCOMM using the flags
"authenticate", "encryption" and "master". Part of the code is:=20

/******************************************/
if ((fd =3D socket(PF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)) < 0)
return fd;

memset(&local_addr, 0, sizeof(local_addr));
local_addr.rc_family =3D AF_BLUETOOTH;
bacpy(&local_addr.rc_bdaddr, BDADDR_ANY);
if ((err =3D bind(fd, (struct sockaddr *)&local_addr, sizeof(local_addr)))
< 0) {
close(fd);
return err;
}

int opt =3D 0;
if (master) opt |=3D L2CAP_LM_MASTER;
if (auth) opt |=3D L2CAP_LM_AUTH;
if (encrypt) opt |=3D L2CAP_LM_ENCRYPT;

if (setsockopt(fd, SOL_RFCOMM, L2CAP_LM, &opt, sizeof(opt)) < 0) {
printf("WARNING can't set link Mode (reason: %s)\n\n",
strerror(errno));
}
/*******************************************/

This programm outputs the following message:=20
WARNING can't set link Mode (reason: Protocol not available)

Why? The L2CAP protocol is available as well as the RFCOMM protocol on
my machine (l2ping actually works and my program exchanges data over
RFCOMM without any problem).

Am I wrong in the way of setting these security flags?

Thank you for your answers.

Julien Campana