void hsrp_print(netdissect_options *ndo, const u_char *bp, u_int len) { const struct hsrp *hp = (const struct hsrp *) bp; uint8_t version; ndo->ndo_protocol = "hsrp"; ND_TCHECK_1(hp->hsrp_version); version = GET_U_1(hp->hsrp_version); ND_PRINT("HSRPv%u", version); if (version != 0) return; ND_TCHECK_1(hp->hsrp_op_code); ND_PRINT("-"); ND_PRINT("%s ", tok2strary(op_code_str, "unknown (%u)", GET_U_1(hp->hsrp_op_code))); ND_PRINT("%u: ", len); ND_TCHECK_1(hp->hsrp_state); ND_PRINT("state=%s ", tok2str(states, "Unknown (%u)", GET_U_1(hp->hsrp_state))); ND_TCHECK_1(hp->hsrp_group); ND_PRINT("group=%u ", GET_U_1(hp->hsrp_group)); ND_TCHECK_1(hp->hsrp_reserved); if (GET_U_1(hp->hsrp_reserved) != 0) { ND_PRINT("[reserved=%u!] ", GET_U_1(hp->hsrp_reserved)); } ND_TCHECK_4(hp->hsrp_virtaddr); ND_PRINT("addr=%s", ipaddr_string(ndo, hp->hsrp_virtaddr)); if (ndo->ndo_vflag) { ND_PRINT(" hellotime="); unsigned_relts_print(ndo, GET_U_1(hp->hsrp_hellotime)); ND_PRINT(" holdtime="); unsigned_relts_print(ndo, GET_U_1(hp->hsrp_holdtime)); ND_PRINT(" priority=%u", GET_U_1(hp->hsrp_priority)); ND_PRINT(" auth=\""); if (nd_printn(ndo, hp->hsrp_authdata, sizeof(hp->hsrp_authdata), ndo->ndo_snapend)) { ND_PRINT("\""); goto trunc; } ND_PRINT("\""); } return; trunc: nd_print_trunc(ndo); }
void _hsrp_print(netdissect_options *ndo, register const uint8_t *bp, register u_int len) { struct hsrp *hp = (struct hsrp *) bp; ND_TCHECK(hp->hsrp_version); ND_PRINT((ndo, "HSRPv%d", hp->hsrp_version)); if (hp->hsrp_version != 0) return; ND_TCHECK(hp->hsrp_op_code); ND_PRINT((ndo, "-")); ND_PRINT((ndo, "%s ", tok2strary(op_code_str, "unknown (%d)", hp->hsrp_op_code))); ND_PRINT((ndo, "%d: ", len)); ND_TCHECK(hp->hsrp_state); ND_PRINT((ndo, "state=%s ", tok2str(states, "Unknown (%d)", hp->hsrp_state))); ND_TCHECK(hp->hsrp_group); ND_PRINT((ndo, "group=%d ", hp->hsrp_group)); ND_TCHECK(hp->hsrp_reserved); if (hp->hsrp_reserved != 0) { ND_PRINT((ndo, "[reserved=%d!] ", hp->hsrp_reserved)); } ND_TCHECK(hp->hsrp_virtaddr); ND_PRINT((ndo, "addr=%s", ipaddr_string(ndo, &hp->hsrp_virtaddr))); if (ndo->ndo_vflag) { ND_PRINT((ndo, " hellotime=")); relts_print(ndo, hp->hsrp_hellotime); ND_PRINT((ndo, " holdtime=")); relts_print(ndo, hp->hsrp_holdtime); ND_PRINT((ndo, " priority=%d", hp->hsrp_priority)); ND_PRINT((ndo, " auth=\"")); if (fn_printn(ndo, hp->hsrp_authdata, sizeof(hp->hsrp_authdata), ndo->ndo_snapend)) { ND_PRINT((ndo, "\"")); goto trunc; } ND_PRINT((ndo, "\"")); } return; trunc: ND_PRINT((ndo, "[|hsrp]")); }
void hsrp_print(register const u_int8_t *bp, register u_int len) { struct hsrp *hp = (struct hsrp *) bp; TCHECK(hp->hsrp_version); printf("HSRPv%d", hp->hsrp_version); if (hp->hsrp_version != 0) return; TCHECK(hp->hsrp_op_code); printf("-"); printf("%s ", tok2strary(op_code_str, "unknown (%d)", hp->hsrp_op_code)); printf("%d: ", len); TCHECK(hp->hsrp_state); printf("state=%s ", tok2str(states, "Unknown (%d)", hp->hsrp_state)); TCHECK(hp->hsrp_group); printf("group=%d ", hp->hsrp_group); TCHECK(hp->hsrp_reserved); if (hp->hsrp_reserved != 0) { printf("[reserved=%d!] ", hp->hsrp_reserved); } TCHECK(hp->hsrp_virtaddr); printf("addr=%s", ipaddr_string(&hp->hsrp_virtaddr)); if (vflag) { printf(" hellotime="); relts_print(hp->hsrp_hellotime); printf(" holdtime="); relts_print(hp->hsrp_holdtime); printf(" priority=%d", hp->hsrp_priority); printf(" auth=\""); if (fn_printn(hp->hsrp_authdata, sizeof(hp->hsrp_authdata), snapend)) { printf("\""); goto trunc; } printf("\""); } return; trunc: printf("[|hsrp]"); }