Lines Matching defs:item
63 * request. The event is used to expire the item.
65 struct item {
71 LIST_ENTRY(item) next;
77 static LIST_HEAD(,item) item_list;
189 struct item *item;
207 LIST_FOREACH(item, &item_list, next) {
208 if (bdaddr_same(&rp.laddr, &item->laddr) == 0
209 || bdaddr_same(&rp.raddr, &item->raddr) == 0)
212 evtimer_del(&item->ev);
213 if (item->hci != -1) {
217 bdaddr_copy(&sa.bt_bdaddr, &item->laddr);
219 send_pin_code_reply(item->hci, &sa, &item->raddr, rp.pin);
220 LIST_REMOVE(item, next);
221 free(item);
227 item = malloc(sizeof(struct item));
228 if (item == NULL) {
229 syslog(LOG_ERR, "Item allocation failed");
233 memset(item, 0, sizeof(struct item));
234 bdaddr_copy(&item->laddr, &rp.laddr);
235 bdaddr_copy(&item->raddr, &rp.raddr);
236 evtimer_set(&item->ev, process_item, item);
237 LIST_INSERT_HEAD(&item_list, item, next);
242 memcpy(item->pin, rp.pin, HCI_PIN_SIZE);
243 item->hci = -1;
248 if (evtimer_add(&item->ev, &tv) < 0) {
249 syslog(LOG_ERR, "Cannot add event timer for item");
250 LIST_REMOVE(item, next);
251 free(item);
261 struct item *item;
283 item = malloc(sizeof(struct item));
284 if (item == NULL) {
285 syslog(LOG_ERR, "Cannot allocate PIN request item");
289 memset(item, 0, sizeof(struct item));
290 bdaddr_copy(&item->laddr, laddr);
291 bdaddr_copy(&item->raddr, raddr);
292 item->hci = hci;
293 evtimer_set(&item->ev, process_item, item);
298 if (evtimer_add(&item->ev, &tv) < 0) {
300 free(item);
304 LIST_INSERT_HEAD(&item_list, item, next);
308 /* Process item event (by expiring it) */
312 struct item *item = arg;
314 syslog(LOG_DEBUG, "PIN for %s expired", bt_ntoa(&item->raddr, NULL));
315 LIST_REMOVE(item, next);
316 evtimer_del(&item->ev);
317 free(item);
320 /* lookup PIN in item cache */
325 struct item *item;
327 LIST_FOREACH(item, &item_list, next) {
328 if (bdaddr_same(raddr, &item->raddr) == 0)
331 if (bdaddr_same(laddr, &item->laddr) == 0
332 && bdaddr_any(&item->laddr) == 0)
335 if (item->hci >= 0)
339 memcpy(pin, item->pin, sizeof(pin));
341 LIST_REMOVE(item, next);
342 evtimer_del(&item->ev);
343 free(item);