From: Martin Schwenke Date: Thu, 16 Aug 2018 06:47:21 +0000 (+1000) Subject: ctdb-tests: Add tests for TCP packet marshalling X-Git-Tag: tdb-1.3.17~1968 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a02cba1c8a716d8e939d9bfb59e038e14f96e69a;p=thirdparty%2Fsamba.git ctdb-tests: Add tests for TCP packet marshalling Signed-off-by: Martin Schwenke Reviewed-by: Amitay Isaacs --- diff --git a/ctdb/tests/cunit/system_socket_test_001.sh b/ctdb/tests/cunit/system_socket_test_001.sh index e2badea257a..3fe9db39e13 100755 --- a/ctdb/tests/cunit/system_socket_test_001.sh +++ b/ctdb/tests/cunit/system_socket_test_001.sh @@ -64,3 +64,66 @@ ok <"$out_file" || exit $? + od -A x -t x1 "$out_file" +} + +tcp_test () +{ + unit_test_notrace tcp_run "$@" +} + +ok <ether_type = htons(ETHERTYPE_IP); + expected_len = 40; + ret = tcp4_build(buf + sizeof(struct ether_header), + sizeof(buf) - sizeof(struct ether_header), + &src.ip, + &dst.ip, + seq, + ack, + rst, + &len); + break; + case AF_INET6: + eth->ether_type = htons(ETHERTYPE_IP6); + expected_len = 60; + ret = tcp6_build(buf + sizeof(struct ether_header), + sizeof(buf) - sizeof(struct ether_header), + &src.ip6, + &dst.ip6, + seq, + ack, + rst, + &len); + break; + default: + abort(); + } + + assert(ret == 0); + assert(len == expected_len); + + write(STDOUT_FILENO, buf + sizeof(struct ether_header), len); +} + static void usage(const char *prog) { fprintf(stderr, "usage: %s [ ...]\n", prog); fprintf(stderr, " commands:\n"); fprintf(stderr, " types\n"); fprintf(stderr, " arp [reply]\n"); + fprintf(stderr, " tcp \n"); exit(1); } @@ -120,6 +184,11 @@ int main(int argc, char **argv) usage(argv[0]); } test_arp(argv[2], argv[3], (argc == 5)); + } else if (strcmp(argv[1], "tcp") == 0) { + if (argc != 7) { + usage(argv[0]); + } + test_tcp(argv[2], argv[3], argv[4], argv[5], argv[6]); } else { usage(argv[0]); }