/* \summary: Virtual Router Redundancy Protocol (VRRP) printer */
#ifdef HAVE_CONFIG_H
-#include "config.h"
+#include <config.h>
#endif
-#include <netdissect-stdinc.h>
+#include "netdissect-stdinc.h"
#include "netdissect.h"
#include "extract.h"
int version, type, auth_type = VRRP_AUTH_NONE; /* keep compiler happy */
const char *type_s;
+ ndo->ndo_protocol = "vrrp";
ND_TCHECK_1(bp);
- version = (EXTRACT_U_1(bp) & 0xf0) >> 4;
- type = EXTRACT_U_1(bp) & 0x0f;
+ version = (GET_U_1(bp) & 0xf0) >> 4;
+ type = GET_U_1(bp) & 0x0f;
type_s = tok2str(type2str, "unknown type (%u)", type);
ND_PRINT("VRRPv%u, %s", version, type_s);
if (ttl != 255)
if (version < 2 || version > 3 || type != VRRP_TYPE_ADVERTISEMENT)
return;
ND_TCHECK_1(bp + 2);
- ND_PRINT(", vrid %u, prio %u", EXTRACT_U_1(bp + 1), EXTRACT_U_1(bp + 2));
+ ND_PRINT(", vrid %u, prio %u", GET_U_1(bp + 1), GET_U_1(bp + 2));
ND_TCHECK_1(bp + 5);
if (version == 2) {
- auth_type = EXTRACT_U_1(bp + 4);
+ auth_type = GET_U_1(bp + 4);
ND_PRINT(", authtype %s", tok2str(auth2str, NULL, auth_type));
- ND_PRINT(", intvl %us, length %u", EXTRACT_U_1(bp + 5), len);
+ ND_PRINT(", intvl %us, length %u", GET_U_1(bp + 5), len);
} else { /* version == 3 */
- uint16_t intvl = (EXTRACT_U_1(bp + 4) & 0x0f) << 8 | EXTRACT_U_1(bp + 5);
+ uint16_t intvl = (GET_U_1(bp + 4) & 0x0f) << 8 | GET_U_1(bp + 5);
ND_PRINT(", intvl %ucs, length %u", intvl, len);
}
if (ndo->ndo_vflag) {
- u_int naddrs = EXTRACT_U_1(bp + 3);
+ u_int naddrs = GET_U_1(bp + 3);
u_int i;
char c;
vec[0].len = len;
if (in_cksum(vec, 1))
ND_PRINT(", (bad vrrp cksum %x)",
- EXTRACT_BE_U_2(bp + 6));
+ GET_BE_U_2(bp + 6));
}
if (version == 3 && ND_TTEST_LEN(bp, len)) {
len, len, IPPROTO_VRRP);
if (cksum)
ND_PRINT(", (bad vrrp cksum %x)",
- EXTRACT_BE_U_2(bp + 6));
+ GET_BE_U_2(bp + 6));
}
ND_PRINT(", addrs");
if (version == 2 && auth_type == VRRP_AUTH_SIMPLE) { /* simple text password */
ND_TCHECK_1(bp + 7);
ND_PRINT(" auth \"");
- if (fn_printn(ndo, bp, 8, ndo->ndo_snapend)) {
+ if (nd_printn(ndo, bp, 8, ndo->ndo_snapend)) {
ND_PRINT("\"");
goto trunc;
}
}
return;
trunc:
- ND_PRINT("[|vrrp]");
+ nd_print_trunc(ndo);
}