diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2005-01-26 02:08:01 +0000 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2005-01-26 02:08:01 +0000 |
commit | 1798ef015acd1da838f3a265bb0003efe94757ad (patch) | |
tree | 626c310f1bc8397109ff77e8f417551d775e5aef /hcid/security.c | |
parent | 30fa99ad8cc79b6e4cb4620a31510d5a6cd31acd (diff) |
Update for different storage methods
Diffstat (limited to 'hcid/security.c')
-rw-r--r-- | hcid/security.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/hcid/security.c b/hcid/security.c index 1cb07da4..eaa791b7 100644 --- a/hcid/security.c +++ b/hcid/security.c @@ -4,7 +4,7 @@ * * Copyright (C) 2000-2001 Qualcomm Incorporated * Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com> - * Copyright (C) 2002-2004 Marcel Holtmann <marcel@holtmann.org> + * Copyright (C) 2002-2005 Marcel Holtmann <marcel@holtmann.org> * * * This program is free software; you can redistribute it and/or modify @@ -380,7 +380,18 @@ reject: return; } -gboolean io_security_event(GIOChannel *chan, GIOCondition cond, gpointer data) +static void remote_name_information(int dev, bdaddr_t *sba, void *ptr) +{ + evt_remote_name_req_complete *evt = ptr; + bdaddr_t *dba = &evt->bdaddr; + + if (!evt->status) + return; + + write_device_name(sba, dba, evt->name); +} + +static gboolean io_security_event(GIOChannel *chan, GIOCondition cond, gpointer data) { unsigned char buf[HCI_MAX_EVENT_SIZE], *ptr = buf; struct hci_dev_info *di = (void *) data; @@ -415,6 +426,12 @@ gboolean io_security_event(GIOChannel *chan, GIOCondition cond, gpointer data) ioctl(dev, HCIGETDEVINFO, (void *) di); + switch (eh->evt) { + case EVT_REMOTE_NAME_REQ_COMPLETE: + remote_name_information(dev, &di->bdaddr, ptr); + break; + } + if (hci_test_bit(HCI_SECMGR, &di->flags)) return TRUE; @@ -459,6 +476,7 @@ void start_security_manager(int hdev) hci_filter_set_event(EVT_PIN_CODE_REQ, &flt); hci_filter_set_event(EVT_LINK_KEY_REQ, &flt); hci_filter_set_event(EVT_LINK_KEY_NOTIFY, &flt); + hci_filter_set_event(EVT_REMOTE_NAME_REQ_COMPLETE, &flt); if (setsockopt(dev, SOL_HCI, HCI_FILTER, &flt, sizeof(flt)) < 0) { syslog(LOG_ERR, "Can't set filter on hci%d. %s(%d)", hdev, strerror(errno), errno); |