void blacklist_notify(int action) { int fd; if (blstate == NULL) blacklist_init(); if (blstate == NULL) return; fd = packet_get_connection_in(); if (!packet_connection_is_on_socket()) { fprintf(stderr, "packet_connection_is_on_socket: false " "(fd = %d)\n", fd); } (void)blacklist_r(blstate, action, fd, "ssh"); }
int8_t thread_node_bootstrap_init(int8_t interface_id, net_6lowpan_mode_e bootstrap_mode) { protocol_interface_info_entry_t *cur; uint8_t table_size = 4; cur = protocol_stack_interface_info_get_by_id(interface_id); if (!cur) { return -1; } //Read MAC device table sizes mac_description_storage_size_t buffer; if (!cur->mac_api || !cur->mac_api->mac_storage_sizes_get || cur->mac_api->mac_storage_sizes_get(cur->mac_api, &buffer) != 0) { return -1; } cur->configure_flags &= ~INTERFACE_BOOTSTRAP_DEFINED; mac_pairwise_key_interface_unregister(cur->id); if (buffer.key_description_table_size < 4) { tr_error("MAC key_description_table_size too short %d<4", buffer.key_description_table_size); return -1; } switch (bootstrap_mode) { case NET_6LOWPAN_HOST: case NET_6LOWPAN_SLEEPY_HOST: protocol_6lowpan_host_init(cur, bootstrap_mode == NET_6LOWPAN_SLEEPY_HOST); break; case NET_6LOWPAN_ROUTER: protocol_6lowpan_router_init(cur); table_size = buffer.key_description_table_size; break; default: return -3; } if (mac_pairwise_key_interface_register(cur->id, table_size, 4) < 0) { tr_error("MAC pairwise key in registration failed"); return -1; } if (blacklist_init() != 0) { tr_debug("6LoWPAN MLE blacklist init failed."); return -1; } blacklist_params_set( THREAD_BLACKLIST_ENTRY_LIFETIME, THREAD_BLACKLIST_TIMER_MAX_TIMEOUT, THREAD_BLACKLIST_TIMER_TIMEOUT, THREAD_BLACKLIST_ENTRY_MAX_NBR, THREAD_BLACKLIST_PURGE_NBR, THREAD_BLACKLIST_PURGE_TIMER_TIMEOUT); if (thread_info_allocate_and_init(cur) < 0) { mac_pairwise_key_interface_unregister(cur->id); return -3; } if (thread_discovery_init(cur->id, cur, thread_info(cur)->version, bootstrap_mode == NET_6LOWPAN_ROUTER) != 0) { tr_error("Discovery init fail"); mac_pairwise_key_interface_unregister(cur->id); return -3; } cur->configure_flags |= INTERFACE_BOOTSTRAP_DEFINED; cur->lowpan_info |= INTERFACE_NWK_BOOTSRAP_MLE; rpl_control_remove_domain_from_interface(cur); //SET MAC key id mode 2 key and device thread_discover_key_descriptor_set(cur->mac_api, thread_discovery_key, THREAD_DISCOVERY_SECURITY_KEY_INDEX, THREAD_DISCOVERY_SECURITY_KEY_SOURCE, buffer.device_decription_table_size - 1); thread_discover_device_descriptor_set(cur->mac_api, thread_discovery_extented_address, buffer.device_decription_table_size - 1); cur->mac_security_key_usage_update_cb = thread_mac_security_key_update_cb; return 0; }