- EXTRACT_BE_U_4(id->pi_ps.slot),
- ipaddr_string(ndo, id->pi_ps.page.p_sid),
- EXTRACT_BE_U_4(id->pi_ps.page.p_uid),
- EXTRACT_BE_U_4(id->pi_mslot),
- ipaddr_string(ndo, id->pi_mpage.p_sid),
- EXTRACT_BE_U_4(id->pi_mpage.p_uid));
-
- nid = EXTRACT_BE_U_2(id->pi_ps.nid);
+ GET_BE_U_4(id->pi_ps.slot),
+ GET_IPADDR_STRING(id->pi_ps.page.p_sid),
+ GET_BE_U_4(id->pi_ps.page.p_uid),
+ GET_BE_U_4(id->pi_mslot),
+ GET_IPADDR_STRING(id->pi_mpage.p_sid),
+ GET_BE_U_4(id->pi_mpage.p_uid));
+ /* now the rest of the fixed-size part of struct pkt_id */
+ ND_TCHECK_SIZE(id);
+
+ nid = GET_BE_U_2(id->pi_ps.nid);
+ if (len < sizeof(*io) * nid)
+ return (-1);