/*
* originally defined as the Ethernet Configuration Testing Protocol.
- * specification: http://www.mit.edu/people/jhawk/ctp.pdf
+ * specification: https://www.mit.edu/people/jhawk/ctp.pdf
*/
#ifdef HAVE_CONFIG_H
#include "extract.h"
#include "addrtoname.h"
-static const char tstr[] = " [|loopback]";
#define LOOPBACK_REPLY 1
#define LOOPBACK_FWDDATA 2
static void
loopback_message_print(netdissect_options *ndo, const u_char *cp, const u_int len)
{
- const u_char *ep = cp + len;
+ const u_char *ep = ndo->ndo_snapend;
uint16_t function;
if (len < 2)
goto invalid;
/* function */
ND_TCHECK_2(cp);
- function = EXTRACT_LE_U_2(cp);
+ function = GET_LE_U_2(cp);
cp += 2;
ND_PRINT(", %s", tok2str(fcode_str, " invalid (%u)", function));
goto invalid;
/* receipt number */
ND_TCHECK_2(cp);
- ND_PRINT(", receipt number %u", EXTRACT_LE_U_2(cp));
+ ND_PRINT(", receipt number %u", GET_LE_U_2(cp));
cp += 2;
/* data */
ND_PRINT(", data (%u octets)", len - 4);
goto invalid;
/* forwarding address */
ND_TCHECK_LEN(cp, MAC_ADDR_LEN);
- ND_PRINT(", forwarding address %s", etheraddr_string(ndo, cp));
+ ND_PRINT(", forwarding address %s", GET_ETHERADDR_STRING(cp));
cp += MAC_ADDR_LEN;
/* data */
ND_PRINT(", data (%u octets)", len - 8);
return;
invalid:
- ND_PRINT("%s", istr);
+ nd_print_invalid(ndo);
ND_TCHECK_LEN(cp, ep - cp);
return;
trunc:
- ND_PRINT("%s", tstr);
+ nd_print_trunc(ndo);
}
void
loopback_print(netdissect_options *ndo, const u_char *cp, const u_int len)
{
- const u_char *ep = cp + len;
+ const u_char *ep = ndo->ndo_snapend;
uint16_t skipCount;
+ ndo->ndo_protocol = "loopback";
ND_PRINT("Loopback");
if (len < 2)
goto invalid;
/* skipCount */
ND_TCHECK_2(cp);
- skipCount = EXTRACT_LE_U_2(cp);
+ skipCount = GET_LE_U_2(cp);
cp += 2;
ND_PRINT(", skipCount %u", skipCount);
if (skipCount % 8)
return;
invalid:
- ND_PRINT("%s", istr);
+ nd_print_invalid(ndo);
ND_TCHECK_LEN(cp, ep - cp);
return;
trunc:
- ND_PRINT("%s", tstr);
+ nd_print_trunc(ndo);
}