mirror of https://github.com/ARMmbed/mbed-os.git
104 lines
5.0 KiB
C
104 lines
5.0 KiB
C
/*
|
|
* Copyright (c) 2015-2018, Pelion and affiliates.
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
/*
|
|
* \file protocol_6lowpan_bootstrap.h
|
|
*
|
|
*/
|
|
|
|
#ifndef PROTOCOL_6LOWPAN_BOOTSTRAP_H_
|
|
#define PROTOCOL_6LOWPAN_BOOTSTRAP_H_
|
|
#include "net_interface.h"
|
|
#include "Service_Libs/mle_service/mle_service_api.h"
|
|
|
|
struct protocol_interface_info_entry;
|
|
struct nd_router;
|
|
|
|
#define MLE_NEIGHBOR_PURGE_NBR 3
|
|
#define MLE_NEIGHBOR_PURGE_TIMER_TIMEOUT 4 // Times advertisement timeout
|
|
|
|
#define MLE_ROUTER_DEFAULT_LIFETIME 128
|
|
#define MLE_ROUTER_HOST_LIFETIME 400
|
|
|
|
#define MLE_NBR_OF_NEIGHBOR_MAX_LIMIT 0
|
|
#define MLE_NBR_OF_NEIGHBOR_LOWER_THRESHOLD 0
|
|
#define MLE_NBR_OF_NEIGHBOR_UPPER_THRESHOLD 0
|
|
#define MLE_TOKEN_BUCKET_SIZE 0
|
|
#define MLE_TOKEN_BUCKET_RATE 0
|
|
#define MLE_TOKEN_BUCKET_COUNT 0
|
|
|
|
#define MLE_LINK_REQ_TOKEN_BUCKET_SIZE 3
|
|
|
|
#define LOWPAN_MAX_FRAME_RETRIES 4
|
|
|
|
// Waiting Scan confirm from MAC (ms)
|
|
#define BOOTSTRAP_SCAN_TIMEOUT 30000
|
|
// Waiting Start confirm from MAC (ms)
|
|
#define BOOTSTRAP_START_TIMEOUT 10000
|
|
|
|
typedef struct mle_6lowpan_data {
|
|
uint16_t router_lifetime; // default lifetime for router neighbor
|
|
uint16_t host_lifetime; // default lifetime for host neighbor
|
|
|
|
uint16_t nbr_of_neigh_lower_threshold; // start to limit addition of neighbors to neighbor list
|
|
uint16_t nbr_of_neigh_upper_threshold; // only priority neighbors are added to neighbor list
|
|
uint16_t nbr_of_neigh_max; // maximum number of neighbors in neighbor list
|
|
|
|
uint8_t token_bucket_size; // MLE token bucket size
|
|
uint8_t token_bucket_rate; // Rate in which tokens are added to bucket (0.1 seconds * rate)
|
|
uint8_t token_bucket_count; // Count of tokens added to bucket at a time
|
|
|
|
uint8_t link_req_token_bucket; // Token bucket for MLE link request with non-valid security counter
|
|
} mle_6lowpan_data_t;
|
|
|
|
#ifdef PANA
|
|
extern void nwk_6lowpan_bootsrap_pana_authentication_cb(bool processSuccesfully, struct protocol_interface_info_entry *cur);
|
|
#endif
|
|
#ifdef HAVE_6LOWPAN_ND
|
|
uint8_t *protocol_6lowpan_mle_service_security_notify_cb(int8_t interface_id, mle_security_event_t event, uint8_t keyId);
|
|
void arm_6lowpan_bootstrap_init(struct protocol_interface_info_entry *cur);
|
|
uint8_t *protocol_6lowpan_nd_border_router_address_get(nwk_interface_id nwk_id);
|
|
uint8_t protocol_6lowpan_rf_link_scalability_from_lqi(uint8_t lqi);
|
|
void protocol_6lowpan_bootstrap_re_start(struct protocol_interface_info_entry *interface);
|
|
void protocol_6lowpan_link_advertise_handle(struct nd_router *cur, struct protocol_interface_info_entry *cur_interface, uint16_t tick);
|
|
void protocol_6lowpan_bootstrap_nd_ready(struct protocol_interface_info_entry *cur_interface);
|
|
void protocol_6lowpan_nd_borderrouter_connection_down(struct protocol_interface_info_entry *interface);
|
|
int8_t arm_6lowpan_mle_service_ready_for_security_init(protocol_interface_info_entry_t *cur);
|
|
int protocol_6lowpan_router_synch_to_new_router(struct protocol_interface_info_entry *cur, uint8_t *ll64, uint8_t incoming_idr, bool retrans);
|
|
void protocol_6lowpan_bootstrap(struct protocol_interface_info_entry *cur);
|
|
int protocol_6lowpan_del_ll16(struct protocol_interface_info_entry *cur, uint16_t mac_short_address);
|
|
int protocol_6lowpan_set_ll16(struct protocol_interface_info_entry *cur, uint16_t mac_short_address);
|
|
int8_t arm_6lowpan_bootstarp_bootstrap_set(int8_t interface_id, net_6lowpan_mode_e bootstrap_mode, net_6lowpan_mode_extension_e net_6lowpan_mode_extension);
|
|
struct mle_6lowpan_data *protocol_6lowpan_mle_data_get(void);
|
|
bool lowpan_neighbour_data_clean(int8_t interface_id, const uint8_t *link_local_address);
|
|
void arm_6lowpan_security_init_ifup(protocol_interface_info_entry_t *cur);
|
|
void protocol_6lowpan_mle_timer(uint16_t ticks_update);
|
|
#else
|
|
#define protocol_6lowpan_nd_border_router_address_get(nwk_id) NULL
|
|
#define arm_6lowpan_mle_service_ready_for_security_init(cur) -1
|
|
#define protocol_6lowpan_bootstrap(cur) ((void)0)
|
|
#define protocol_6lowpan_del_ll16(cur, mac_short_address) -1
|
|
#define protocol_6lowpan_set_ll16(cur, mac_short_address) -1
|
|
#define arm_6lowpan_bootstarp_bootstrap_set(interface_id, bootstrap_mode, net_6lowpan_mode_extension) -1
|
|
#define protocol_6lowpan_mle_data_get() NULL
|
|
#define arm_6lowpan_security_init_ifup(cur) ((void)0)
|
|
#define protocol_6lowpan_mle_timer(ticks_update) ((void)0)
|
|
#endif
|
|
void bootstrap_timer_handle(uint16_t ticks);
|
|
|
|
#endif /* PROTOCOL_6LOWPAN_BOOTSTRAP_H_ */
|