/******************************************************************************* ** ** Function BNEP_Register ** ** Description This function is called by the upper layer to register ** its callbacks with BNEP ** ** Parameters: p_reg_info - contains all callback function pointers ** ** ** Returns BNEP_SUCCESS if registered successfully ** BNEP_FAILURE if connection state callback is missing ** *******************************************************************************/ tBNEP_RESULT BNEP_Register (tBNEP_REGISTER *p_reg_info) { /* There should be connection state call back registered */ if ((!p_reg_info) || (!(p_reg_info->p_conn_state_cb))) return BNEP_SECURITY_FAIL; bnep_cb.p_conn_ind_cb = p_reg_info->p_conn_ind_cb; bnep_cb.p_conn_state_cb = p_reg_info->p_conn_state_cb; bnep_cb.p_data_ind_cb = p_reg_info->p_data_ind_cb; bnep_cb.p_data_buf_cb = p_reg_info->p_data_buf_cb; bnep_cb.p_filter_ind_cb = p_reg_info->p_filter_ind_cb; bnep_cb.p_mfilter_ind_cb = p_reg_info->p_mfilter_ind_cb; bnep_cb.p_tx_data_flow_cb = p_reg_info->p_tx_data_flow_cb; if (bnep_register_with_l2cap ()) return BNEP_SECURITY_FAIL; bnep_cb.profile_registered = TRUE; BTM_GetLocalDeviceAddr (bnep_cb.my_bda); return BNEP_SUCCESS; }
int btpan_tap_open() { struct ifreq ifr; int fd, err; const char *clonedev = "/dev/tun"; /* open the clone device */ //system("insmod /system/lib/modules/tun.ko"); if( (fd = open(clonedev, O_RDWR)) < 0 ) { BTIF_TRACE_DEBUG("could not open %s, err:%d", clonedev, errno); return fd; } memset(&ifr, 0, sizeof(ifr)); ifr.ifr_flags = IFF_TAP | IFF_NO_PI; strncpy(ifr.ifr_name, TAP_IF_NAME, IFNAMSIZ); /* try to create the device */ if( (err = ioctl(fd, TUNSETIFF, (void *) &ifr)) < 0 )//|| tap_setup_ip(TAP_IF_NAME) == FALSE) { BTIF_TRACE_DEBUG("ioctl error:%d, errno:%s", err, strerror(errno)); close(fd); return err; } BTM_GetLocalDeviceAddr (local_addr); if(tap_if_up(TAP_IF_NAME, local_addr) == 0) { int flags = fcntl(fd, F_GETFL, 0); fcntl(fd, F_SETFL, flags | O_NONBLOCK); return fd; } BTIF_TRACE_ERROR("can not bring up tap interface:%s", TAP_IF_NAME); close(fd); return -1; }