- if (rrcp->rrcp_proto==1 && rrcp->rrcp_opcode==0 && rrcp->rrcp_isreply){
- ND_PRINT((ndo, " downlink_port=%d, uplink_port=%d, uplink_mac=%s, vendor_id=%08x ,chip_id=%04x ",
- rrcp_hello->rrcp_downlink_port,
- rrcp_hello->rrcp_uplink_port,
- etheraddr_string(rrcp_hello->rrcp_uplink_mac),
- rrcp_hello->rrcp_vendor_id,
- rrcp_hello->rrcp_chip_id));
- }else if (rrcp->rrcp_opcode==1 || rrcp->rrcp_opcode==2 || rrcp->rrcp_proto==2){
- ND_PRINT((ndo, ", cookie=0x%08x%08x ",
- rrcp->cookie2, rrcp->cookie1));
+ if (rrcp_proto==1 && rrcp_opcode==0 &&
+ ((*(rrcp + RRCP_OPCODE_ISREPLY_OFFSET)) & RRCP_ISREPLY)){
+ ND_TCHECK2(*(rrcp + RRCP_VENDOR_ID_OFFSET), 4);
+ ND_PRINT((ndo, " downlink_port=%d, uplink_port=%d, uplink_mac=%s, vendor_id=%08x ,chip_id=%04x ",
+ *(rrcp + RRCP_DOWNLINK_PORT_OFFSET),
+ *(rrcp + RRCP_UPLINK_PORT_OFFSET),
+ etheraddr_string(ndo, rrcp + RRCP_UPLINK_MAC_OFFSET),
+ EXTRACT_32BITS(rrcp + RRCP_VENDOR_ID_OFFSET),
+ EXTRACT_16BITS(rrcp + RRCP_CHIP_ID_OFFSET)));
+ }else if (rrcp_opcode==1 || rrcp_opcode==2 || rrcp_proto==2){
+ ND_TCHECK2(*(rrcp + RRCP_COOKIE2_OFFSET), 4);
+ ND_PRINT((ndo, ", cookie=0x%08x%08x ",
+ EXTRACT_32BITS(rrcp + RRCP_COOKIE2_OFFSET),
+ EXTRACT_32BITS(rrcp + RRCP_COOKIE1_OFFSET)));