- ND_TCHECK_SIZE(dio);
- dagid_str = ip6addr_string (ndo, dio->rpl_dagid);
-
- ND_PRINT((ndo, " [dagid:%s,seq:%u,instance:%u,rank:%u,%smop:%s,prf:%u]",
- dagid_str,
- EXTRACT_U_1(dio->rpl_dtsn),
- EXTRACT_U_1(dio->rpl_instanceid),
- EXTRACT_BE_U_2(dio->rpl_dagrank),
- RPL_DIO_GROUNDED(EXTRACT_U_1(dio->rpl_mopprf)) ? "grounded,":"",
- tok2str(rpl_mop_values, "mop%u", RPL_DIO_MOP(EXTRACT_U_1(dio->rpl_mopprf))),
- RPL_DIO_PRF(EXTRACT_U_1(dio->rpl_mopprf))));
+ ND_ICHECK_ZU(length, <, sizeof(struct nd_rpl_dio));
+ ND_PRINT(" [dagid:%s,seq:%u,instance:%u,rank:%u,%smop:%s,prf:%u]",
+ GET_IP6ADDR_STRING(dio->rpl_dagid),
+ GET_U_1(dio->rpl_dtsn),
+ GET_U_1(dio->rpl_instanceid),
+ GET_BE_U_2(dio->rpl_dagrank),
+ RPL_DIO_GROUNDED(GET_U_1(dio->rpl_mopprf)) ? "grounded,":"",
+ tok2str(rpl_mop_values, "mop%u",
+ RPL_DIO_MOP(GET_U_1(dio->rpl_mopprf))),
+ RPL_DIO_PRF(GET_U_1(dio->rpl_mopprf)));