Date: Tue, 11 Jun 2002 10:14:48 -0700 (PDT) From: Maksim Yevmenkin <m_evmenkin@yahoo.com> To: Harti Brandt <brandt@fokus.gmd.de>, Terry Lambert <tlambert2@mindspring.com> Cc: Maksim Yevmenkin <m_evmenkin@yahoo.com>, current@FreeBSD.ORG Subject: Re: Device cloning Message-ID: <20020611171448.77703.qmail@web13305.mail.yahoo.com> In-Reply-To: <20020611114039.L35453-100000@beagle.fokus.gmd.de>
next in thread | previous in thread | raw e-mail | index | archive | help
Hackers,
[...]
> TL>I don't think the original poster wanted cloning for support on
> TL>physical devices for which there was a 1:1 relationship anyway
> TL>(8^)), but there *are* cases where it could be useful.
> TL>
> TL>Actually, I think the original poster never really disclosed *what*
> TL>they wanted to use the feature for...
>
> That's true...
>
> From reading the original post I was under the impression that this is
> again a 'hey, I write a device driver and I need to track the number of
> opens and to tack a context onto each open' that periodically comes up.
> If I'm wrong, well, sorry then...
I'm sorry people :) I should have been more specific. Here is
what i meant. I'm working on Bluetooth stack for FreeBSD. Everything
is implemented in Netgraph. The real device driver nodes are connected
to HCI layer. You can talk to any Bluetooth device via HCI layer. It
does not really matter what kind of device you have, PC-CARD, serial
or USB dongle. They all MUST talk via HCI. So HCI is not really a
device driver, and, IMO, it is not a pseudo device driver. It sort
of looks like /dev/tcp :)
Currently there is a single "control" hook for every HCI node. Control
application connects to the hook and sends HCI commands and receives
HCI events. It does work, but once the hook is connected, nobody else
can connect to the same hook. That is a limitation, IMO. It would
really be nice to have several control applications. For example,
- HCI dump (a-la tcpdump)
- HCI link key/PIN manager (security)
My choices were:
1) Create /dev/hci[0-9]+ for every HCI node and implement cloning
pid 1 -> /dev/hci0 -+-> hci0 node -> device driver node
pid 2 -> /dev/hci0(clone 0) -+
This will not work work.
2) Raw HCI sockets
The problem here is how to identify device, i.e. what to put
into sockaddr? Netgraph node name? May be not a good choice,
because it can be changed at any time. Device BD_ADDR? Does not
work also, because in order to get BD_ADDR you must send HCI
command to the device.
3) Multiple "control/raw" Netgraph hooks
I like it best for now. Each hook will have a filter and
every message/data will be delivered to each hook if it has
not been filtered.
Anyway, i got answers i wanted. Thanks everyone.
thanks,
max
__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020611171448.77703.qmail>
