Add option to validate dio before init dag

This commit is contained in:
tdesmet 2018-08-14 21:23:11 +02:00
parent b8881a042e
commit 3cb82e7d6c
2 changed files with 20 additions and 0 deletions

View File

@ -191,6 +191,13 @@
#define RPL_DEFAULT_LEAF_ONLY 0
#endif
/*
* Function used to validate dio before using it to init dag
*/
#ifdef RPL_CONF_VALIDATE_DIO_FUNC
#define RPL_VALIDATE_DIO_FUNC RPL_CONF_VALIDATE_DIO_FUNC
#endif
/******************************************************************************/
/********************************** Timing ************************************/
/******************************************************************************/

View File

@ -61,6 +61,12 @@ static int init_dag_from_dio(rpl_dio_t *dio);
/* Allocate instance table. */
rpl_instance_t curr_instance;
/*---------------------------------------------------------------------------*/
#ifdef RPL_VALIDATE_DIO_FUNC
int RPL_VALIDATE_DIO_FUNC(rpl_dio_t *dio);
#endif /* RPL_PROBING_SELECT_FUNC */
/*---------------------------------------------------------------------------*/
const char *
rpl_dag_state_to_str(enum rpl_dag_state state)
@ -542,6 +548,13 @@ init_dag_from_dio(rpl_dio_t *dio)
static int
process_dio_init_dag(uip_ipaddr_t *from, rpl_dio_t *dio)
{
#ifdef RPL_VALIDATE_DIO_FUNC
if(!RPL_VALIDATE_DIO_FUNC(dio)) {
LOG_WARN("DIO validation failed\n");
return 0;
}
#endif
/* Check MOP */
if(dio->mop != RPL_MOP_NO_DOWNWARD_ROUTES && dio->mop != RPL_MOP_NON_STORING) {
LOG_WARN("ignoring DIO with an unsupported MOP: %d\n", dio->mop);