/* \summary: REdis Serialization Protocol (RESP) printer */
#ifdef HAVE_CONFIG_H
-#include "config.h"
+#include <config.h>
#endif
-#include <netdissect-stdinc.h>
+#include "netdissect-stdinc.h"
#include "netdissect.h"
#include <limits.h>
#include <string.h>
#include "extract.h"
-static const char tstr[] = " [|RESP]";
/*
* For information regarding RESP, see: http://redis.io/topics/protocol
#define RESP_BULK_STRING '$'
#define RESP_ARRAY '*'
-#define resp_print_empty(ndo) ND_PRINT((ndo, " empty"))
-#define resp_print_null(ndo) ND_PRINT((ndo, " null"))
-#define resp_print_length_too_large(ndo) ND_PRINT((ndo, " length too large"))
-#define resp_print_length_negative(ndo) ND_PRINT((ndo, " length negative and not -1"))
-#define resp_print_invalid(ndo) ND_PRINT((ndo, " invalid"))
+#define resp_print_empty(ndo) ND_PRINT(" empty")
+#define resp_print_null(ndo) ND_PRINT(" null")
+#define resp_print_length_too_large(ndo) ND_PRINT(" length too large")
+#define resp_print_length_negative(ndo) ND_PRINT(" length negative and not -1")
+#define resp_print_invalid(ndo) ND_PRINT(" invalid")
void resp_print(netdissect_options *, const u_char *, u_int);
static int resp_parse(netdissect_options *, const u_char *, int);
#define FIND_CR_OR_LF(_ptr, _len) \
for (;;) { \
LCHECK(_len); \
- ND_TCHECK(*_ptr); \
+ ND_TCHECK_1(_ptr); \
if (*_ptr == '\r' || *_ptr == '\n') \
break; \
_ptr++; \
/* \
* Have we hit the end of data? \
*/ \
- if (_len == 0 || !ND_TTEST(*_ptr)) { \
+ if (_len == 0 || !ND_TTEST_1(_ptr)) {\
/* \
* Yes. Have we seen a \r \
* or \n? \
* Assumes the data has already been verified as present.
*/
#define RESP_PRINT_SEGMENT(_ndo, _bp, _len) \
- ND_PRINT((_ndo, " \"")); \
- if (fn_printn(_ndo, _bp, _len, _ndo->ndo_snapend)) \
+ ND_PRINT(" \""); \
+ if (nd_printn(_ndo, _bp, _len, _ndo->ndo_snapend)) \
goto trunc; \
fn_print_char(_ndo, '"');
{
int ret_len = 0, length_cur = length;
+ ndo->ndo_protocol = "resp";
if(!bp || length <= 0)
return;
- ND_PRINT((ndo, ": RESP"));
+ ND_PRINT(": RESP");
while (length_cur > 0) {
/*
* This block supports redis pipelining.
return;
trunc:
- ND_PRINT((ndo, "%s", tstr));
+ nd_print_trunc(ndo);
}
static int