Skip to content

Commit 79161ff

Browse files
committed
gnrc/rpl: extract gnrc_rpl_dodag_root_init
1 parent 08799d9 commit 79161ff

File tree

3 files changed

+33
-25
lines changed

3 files changed

+33
-25
lines changed

sys/include/net/gnrc/rpl/dodag.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,13 @@ void gnrc_rpl_instance_remove(gnrc_rpl_instance_t *inst);
100100
*/
101101
gnrc_rpl_instance_t *gnrc_rpl_instance_get(uint8_t instance_id);
102102

103+
/**
104+
* @brief Setup self as root for the @p dodag.
105+
*
106+
* @param[in] dodag Pointer to the dodag.
107+
*/
108+
void gnrc_rpl_dodag_root_init(gnrc_rpl_dodag_t *dodag);
109+
103110
/**
104111
* @brief Initialize a new RPL DODAG with the id @p dodag_id for the instance @p instance.
105112
*

sys/net/gnrc/routing/rpl/gnrc_rpl.c

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -141,37 +141,14 @@ gnrc_rpl_instance_t *gnrc_rpl_root_init(uint8_t instance_id, const ipv6_addr_t *
141141
instance_id = gnrc_rpl_gen_instance_id(local_inst_id);
142142
}
143143

144-
gnrc_rpl_dodag_t *dodag = NULL;
145144
gnrc_rpl_instance_t *inst = gnrc_rpl_root_instance_init(instance_id, dodag_id,
146145
GNRC_RPL_DEFAULT_MOP);
147146

148147
if (!inst) {
149148
return NULL;
150149
}
151-
152-
dodag = &inst->dodag;
153-
154-
dodag->dtsn = 1;
155-
dodag->prf = 0;
156-
dodag->dio_interval_doubl = CONFIG_GNRC_RPL_DEFAULT_DIO_INTERVAL_DOUBLINGS;
157-
dodag->dio_min = CONFIG_GNRC_RPL_DEFAULT_DIO_INTERVAL_MIN;
158-
dodag->dio_redun = CONFIG_GNRC_RPL_DEFAULT_DIO_REDUNDANCY_CONSTANT;
159-
dodag->default_lifetime = CONFIG_GNRC_RPL_DEFAULT_LIFETIME;
160-
dodag->lifetime_unit = CONFIG_GNRC_RPL_LIFETIME_UNIT;
161-
dodag->version = GNRC_RPL_COUNTER_INIT;
162-
dodag->grounded = GNRC_RPL_GROUNDED;
163-
dodag->node_status = GNRC_RPL_ROOT_NODE;
164-
dodag->my_rank = GNRC_RPL_ROOT_RANK;
165-
dodag->dio_opts |= GNRC_RPL_REQ_DIO_OPT_DODAG_CONF;
166-
167-
if (!IS_ACTIVE(CONFIG_GNRC_RPL_WITHOUT_PIO)) {
168-
dodag->dio_opts |= GNRC_RPL_REQ_DIO_OPT_PREFIX_INFO;
169-
}
170-
171-
trickle_start(gnrc_rpl_pid, &dodag->trickle, GNRC_RPL_MSG_TYPE_TRICKLE_MSG,
172-
(1 << dodag->dio_min), dodag->dio_interval_doubl,
173-
dodag->dio_redun);
174-
gnrc_rpl_rpble_update(dodag);
150+
gnrc_rpl_dodag_root_init(&inst->dodag);
151+
gnrc_rpl_rpble_update(&inst->dodag);
175152

176153
return inst;
177154
}

sys/net/gnrc/routing/rpl/gnrc_rpl_dodag.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,30 @@ gnrc_rpl_instance_t *gnrc_rpl_instance_get(uint8_t instance_id)
150150
return NULL;
151151
}
152152

153+
void gnrc_rpl_dodag_root_init(gnrc_rpl_dodag_t *dodag)
154+
{
155+
dodag->dtsn = 1;
156+
dodag->prf = 0;
157+
dodag->dio_interval_doubl = CONFIG_GNRC_RPL_DEFAULT_DIO_INTERVAL_DOUBLINGS;
158+
dodag->dio_min = CONFIG_GNRC_RPL_DEFAULT_DIO_INTERVAL_MIN;
159+
dodag->dio_redun = CONFIG_GNRC_RPL_DEFAULT_DIO_REDUNDANCY_CONSTANT;
160+
dodag->default_lifetime = CONFIG_GNRC_RPL_DEFAULT_LIFETIME;
161+
dodag->lifetime_unit = CONFIG_GNRC_RPL_LIFETIME_UNIT;
162+
dodag->version = GNRC_RPL_COUNTER_INIT;
163+
dodag->grounded = GNRC_RPL_GROUNDED;
164+
dodag->node_status = GNRC_RPL_ROOT_NODE;
165+
dodag->my_rank = GNRC_RPL_ROOT_RANK;
166+
dodag->dio_opts |= GNRC_RPL_REQ_DIO_OPT_DODAG_CONF;
167+
168+
if (!IS_ACTIVE(CONFIG_GNRC_RPL_WITHOUT_PIO)) {
169+
dodag->dio_opts |= GNRC_RPL_REQ_DIO_OPT_PREFIX_INFO;
170+
}
171+
172+
trickle_start(gnrc_rpl_pid, &dodag->trickle, GNRC_RPL_MSG_TYPE_TRICKLE_MSG,
173+
(1 << dodag->dio_min), dodag->dio_interval_doubl,
174+
dodag->dio_redun);
175+
}
176+
153177
bool gnrc_rpl_dodag_init(gnrc_rpl_instance_t *instance, const ipv6_addr_t *dodag_id,
154178
kernel_pid_t iface)
155179
{

0 commit comments

Comments
 (0)