2004-05-21 11:17:17

by Stephen Crane

[permalink] [raw]
Subject: RFComm dynamic channel allocation

Hi,
The attached patch (against 2.6.6) provides dynamic channel allocation
for RFComm listening sockets. This means that you can bind to channel #0
and the kernel will allocate a channel for you when you call listen() on
it. Retrieve the allocated channel number via getsockname().

The only query I have is what to return if there are no free channels.
Is ENOMEM right?

Steve
--
Stephen Crane, Rococo Software Ltd. http://www.rococosoft.com
[email protected] +353-1-6601315 (ext 209)


Attachments:
rfcomm.dynamic.patch (564.00 B)

2004-07-08 13:02:56

by Collin R. Mulliner

[permalink] [raw]
Subject: Re: [Bluez-devel] RFComm dynamic channel allocation

Hi,

does the dynamic rfcomm channel allocation work? I'm running 2.6.7-mh1
and I allways get channel 1, which is used (listend and connected) by a
other process. I don't get any error it just binds and listens on
channel 1.

cat /proc/bluetooth/rfcomm/sock

/* created thru: rfcomm listen /dev/rfcomm0 1 */
00:00:00:00:00:00 00:00:00:00:00:00 4 1
00:00:00:00:00:00 00:00:00:00:00:00 2 0
/* created thru: running my server */
xx:xx:xx:xx:xx:xx 00:00:00:00:00:00 4 1

my code:

server_sa.rc_family = AF_BLUETOOTH;
server_sa.rc_channel = channel;
server_sa.rc_bdaddr = self.addr;

if (bind(server, (struct sockaddr*) &server_sa, sizeof(server_sa)) < 0){
return(-1);
}

if (listen(server, 1) < 0) {
return(-1);
}

if (channel == 0) {
remote_len = sizeof(struct sockaddr_rc);
memset(&remote_sa, 0, sizeof(struct sockaddr_rc));
if (getsockname(server, (struct sockaddr*) &remote_sa, &remote_len) <
0) {
return(-1);
}

channel = remote_sa.rc_channel;
printf("bt_server(): channel %d\n", remote_sa.rc_channel); }

thanks ... Collin

--
Collin R. Mulliner <[email protected]>
BETAVERSiON Systems [http://www.betaversion.net]
info/pgp: finger [email protected]
To know recursion, you must first know recursion.


-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 -
digital self defense, top technical experts, no vendor pitches,
unmatched networking opportunities. Visit http://www.blackhat.com
_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel