]> The Tcpdump Group git mirrors - tcpdump/blobdiff - CONTRIBUTING
ICMPv6: Add the IPv6-Only flag
[tcpdump] / CONTRIBUTING
index a5875d968c2586884d55cfd2190ef3099eb668bc..4e94d645ee5cea356be6769b631f416d642b6bd5 100644 (file)
@@ -126,9 +126,18 @@ c) Put the format of packets/headers/options as comments if there is no
 
 d) The printer may receive incomplete packet in the buffer, truncated at any
    random position, for example by capturing with '-s size' option.
-   Thus use ND_TTEST, ND_TTEST_LEN, ND_TCHECK or ND_TCHECK_LEN for bound checking.
-   For ND_TCHECK_LEN:
-     Define : static const char tstr[] = " [|protocol]";
+   Thus use, for bounds checking, one of the following macros (defined in
+   netdissect.h or extract.h):
+    ND_TCHECK_n(p), n in { 1, 2, 3, 4, 5, 6, 7, 8, 16 }
+    ND_TCHECK_SIZE(p)
+    ND_TCHECK_LEN(p, l)
+
+    ND_TTEST_n(p), n in { 1, 2, 3, 4, 5, 6, 7, 8, 16 }
+    ND_TTEST_SIZE(p)
+    ND_TTEST_LEN(p, l)
+
+   For the ND_TCHECK_* macros (if not already done):
+     Assign: ndo->ndo_protocol = "protocol";
      Define a label: trunc
      Print with: nd_print_trunc(ndo);
    You can test the code via:
@@ -139,8 +148,8 @@ d) The printer may receive incomplete packet in the buffer, truncated at any
 e) Do invalid packet checks in code: Think that your code can receive in input
    not only a valid packet but any arbitrary random sequence of octets (packet
    - built malformed originally by the sender or by a fuzz tester,
-   - became corrupted in transit).
-   Print with: ND_PRINT("%s", istr);   /* to print " (invalid)" */
+   - became corrupted in transit or for some other reason).
+   Print with: nd_print_invalid(ndo);  /* to print " (invalid)" */
 
 f) Use 'struct tok' for indexed strings and print them with
    tok2str() or bittok2str() (for flags).