1 /* $NetBSD: bthcid.h,v 1.3 2006/09/26 19:18:19 plunky Exp $ */ 2 /* $DragonFly: src/usr.sbin/bthcid/bthcid.h,v 1.1 2008/01/30 14:10:19 hasso Exp $ */ 3 4 /*- 5 * Copyright (c) 2006 Itronix Inc. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 3. The name of Itronix Inc. may not be used to endorse 17 * or promote products derived from this software without specific 18 * prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY ITRONIX INC. ``AS IS'' AND 21 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ITRONIX INC. BE LIABLE FOR ANY 24 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 25 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 26 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 27 * ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 * POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 #ifndef _BTHCID_H_ 34 #define _BTHCID_H_ 1 35 36 #include <sys/queue.h> 37 38 /* config.c */ 39 uint8_t *lookup_key (bdaddr_t *, bdaddr_t *); 40 void save_key (bdaddr_t *, bdaddr_t *, uint8_t *); 41 void create_dict(bdaddr_t *laddr, bdaddr_t *raddr, uint8_t * key); 42 43 /* client.c */ 44 int init_control (const char *, mode_t); 45 int send_client_request (bdaddr_t *, bdaddr_t *, int); 46 uint8_t *lookup_pin (bdaddr_t *, bdaddr_t *); 47 48 /* hci.c */ 49 int init_hci (bdaddr_t *); 50 int send_pin_code_reply (int, struct sockaddr_bt *, bdaddr_t *, uint8_t *); 51 52 #define BTHCID_BUFFER_SIZE 512 53 #define BTHCID_IDENT "bthcid" 54 #define BTHCID_PIDFILE "/var/run/" BTHCID_IDENT ".pid" 55 #define BTHCID_KEYSFILE "/var/db/" BTHCID_IDENT ".keys" 56 57 struct link_key 58 { 59 bdaddr_t bdaddr; /* remote device BDADDR */ 60 char *name; /* remote device name */ 61 uint8_t *key; /* link key (or NULL if no key) */ 62 char *pin; /* pin (or NULL if no pin) */ 63 LIST_ENTRY(link_key) next; /* link to the next */ 64 }; 65 typedef struct link_key link_key_t; 66 typedef struct link_key * link_key_p; 67 68 extern char *config_file; 69 70 #if __config_debug__ 71 void dump_config (void); 72 #endif 73 74 #ifndef bdaddr_p 75 #define bdaddr_p bdaddr_t * 76 #endif 77 78 void read_config_file(void); 79 void clean_config (void); 80 link_key_p get_key (bdaddr_p bdaddr, int exact_match); 81 82 int read_keys_file (void); 83 int dump_keys_file (void); 84 85 #endif /* _BTHCID_H_ */ 86