From dac15844d4557ef383100d6b39424bd5c9ac7b4a Mon Sep 17 00:00:00 2001 From: Michal Ruprich Date: Jun 07 2018 10:12:47 +0000 Subject: Adding support for VSOCK --- diff --git a/0009-Change-n-flag-to-nn-in-TESTonce.patch b/0009-Change-n-flag-to-nn-in-TESTonce.patch new file mode 100644 index 0000000..53a9556 --- /dev/null +++ b/0009-Change-n-flag-to-nn-in-TESTonce.patch @@ -0,0 +1,27 @@ +From 04e23aa3f91ff137237daf68f02e7b3c0c1a9168 Mon Sep 17 00:00:00 2001 +From: rpm-build +Date: Tue, 11 Apr 2017 09:19:48 +0200 +Subject: [PATCH 09/13] Change -n flag to -nn in TESTonce + +We need to change this because we have a different meaning of -n +flag than upstream does. We use -nn in those cases. +--- + tests/TESTonce | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/TESTonce b/tests/TESTonce +index 7026624..e348701 100755 +--- a/tests/TESTonce ++++ b/tests/TESTonce +@@ -21,7 +21,7 @@ if ($^O eq 'MSWin32') { + else { + # we used to do this as a nice pipeline, but the problem is that $r fails to + # to be set properly if the tcpdump core dumps. +- $r = system "../tcpdump 2>/dev/null -n -t -r $input $options >NEW/$output"; ++ $r = system "../tcpdump 2>/dev/null -nn -t -r $input $options >NEW/$output"; + if($r != 0) { + # this means tcpdump failed. + open(OUTPUT, ">>"."NEW/$output") || die "fail to open $output\n"; +-- +2.13.5 + diff --git a/0010-Expect-miliseconds-instead-of-seconds-in-icmp-captur.patch b/0010-Expect-miliseconds-instead-of-seconds-in-icmp-captur.patch new file mode 100644 index 0000000..30502b8 --- /dev/null +++ b/0010-Expect-miliseconds-instead-of-seconds-in-icmp-captur.patch @@ -0,0 +1,45 @@ +From 0ae4aa1881bbe40443bff802b5e4aa6ca0696dd9 Mon Sep 17 00:00:00 2001 +From: rpm-build +Date: Tue, 11 Apr 2017 09:37:53 +0200 +Subject: [PATCH 10/13] Expect miliseconds instead of seconds in icmp capture. + +Again this is caused by our patch, so we need to modify tests +accordingly. +--- + tests/icmpv6.out | 2 +- + tests/icmpv6_opt24-v.out | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/tests/icmpv6.out b/tests/icmpv6.out +index bb7775e..8979540 100644 +--- a/tests/icmpv6.out ++++ b/tests/icmpv6.out +@@ -1,5 +1,5 @@ + IP6 (hlim 255, next-header ICMPv6 (58) payload length: 176) fe80::b299:28ff:fec8:d66c > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 176 +- hop limit 64, Flags [home agent], pref medium, router lifetime 15s, reachable time 0s, retrans time 0s ++ hop limit 64, Flags [home agent], pref medium, router lifetime 15s, reachable time 0ms, retrans time 0ms + prefix info option (3), length 32 (4): 2222:3333:4444:5555:6600::/72, Flags [onlink, auto], valid time 2592000s, pref. time 604800s + 0x0000: 48c0 0027 8d00 0009 3a80 0000 0000 2222 + 0x0010: 3333 4444 5555 6600 0000 0000 0000 +diff --git a/tests/icmpv6_opt24-v.out b/tests/icmpv6_opt24-v.out +index 2b7cf09..00512df 100644 +--- a/tests/icmpv6_opt24-v.out ++++ b/tests/icmpv6_opt24-v.out +@@ -1,5 +1,5 @@ + IP6 (hlim 255, next-header ICMPv6 (58) payload length: 120) fe80::16cf:92ff:fe87:23d6 > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 120 +- hop limit 0, Flags [managed, other stateful], pref medium, router lifetime 0s, reachable time 0s, retrans time 0s ++ hop limit 0, Flags [managed, other stateful], pref medium, router lifetime 0s, reachable time 0ms, retrans time 0ms + source link-address option (1), length 8 (1): 14:cf:92:87:23:d6 + mtu option (5), length 8 (1): 1500 + prefix info option (3), length 32 (4): fd8d:4fb3:5b2e::/64, Flags [onlink, auto], valid time 7200s, pref. time 1800s +@@ -7,7 +7,7 @@ IP6 (hlim 255, next-header ICMPv6 (58) payload length: 120) fe80::16cf:92ff:fe87 + rdnss option (25), length 24 (3): lifetime 1800s, addr: fd8d:4fb3:5b2e::1 + dnssl option (31), length 16 (2): lifetime 1800s, domain(s): lan. + IP6 (hlim 255, next-header ICMPv6 (58) payload length: 120) fe80::16cf:92ff:fe87:23d6 > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 120 +- hop limit 0, Flags [managed, other stateful], pref medium, router lifetime 0s, reachable time 0s, retrans time 0s ++ hop limit 0, Flags [managed, other stateful], pref medium, router lifetime 0s, reachable time 0ms, retrans time 0ms + source link-address option (1), length 8 (1): 14:cf:92:87:23:d6 + mtu option (5), length 8 (1): 1500 + prefix info option (3), length 32 (4): fd8d:4fb3:5b2e::/64, Flags [onlink, auto], valid time 7200s, pref. time 1800s +-- +2.13.5 diff --git a/0011-Evp-cipher-buffers.patch b/0011-Evp-cipher-buffers.patch new file mode 100644 index 0000000..a271419 --- /dev/null +++ b/0011-Evp-cipher-buffers.patch @@ -0,0 +1,133 @@ +diff --git a/print-esp.c b/print-esp.c +index 511ee8a3..5b282526 100644 +--- a/print-esp.c ++++ b/print-esp.c +@@ -192,8 +192,8 @@ int esp_print_decrypt_buffer_by_ikev2(netdissect_options *ndo, + const u_char *iv; + unsigned int len; + EVP_CIPHER_CTX *ctx; +- unsigned int block_size, output_buffer_size; +- u_char *output_buffer; ++ unsigned int block_size, buffer_size; ++ u_char *input_buffer, *output_buffer; + + /* initiator arg is any non-zero value */ + if(initiator) initiator=1; +@@ -228,19 +228,41 @@ int esp_print_decrypt_buffer_by_ikev2(netdissect_options *ndo, + (*ndo->ndo_warning)(ndo, "espkey init failed"); + set_cipher_parameters(ctx, NULL, NULL, iv, 0); + /* +- * Allocate a buffer for the decrypted data. +- * The output buffer must be separate from the input buffer, and +- * its size must be a multiple of the cipher block size. ++ * Allocate buffers for the encrypted and decrypted data. ++ * Both buffers' sizes must be a multiple of the cipher block ++ * size, and the output buffer must be separate from the input ++ * buffer. + */ + block_size = (unsigned int)EVP_CIPHER_CTX_block_size(ctx); +- output_buffer_size = len + (block_size - len % block_size); +- output_buffer = (u_char *)malloc(output_buffer_size); ++ buffer_size = len + (block_size - len % block_size); ++ ++ /* ++ * Attempt to allocate the input buffer. ++ */ ++ input_buffer = (u_char *)malloc(buffer_size); ++ if (input_buffer == NULL) { ++ (*ndo->ndo_warning)(ndo, "can't allocate memory for encrypted data buffer"); ++ EVP_CIPHER_CTX_free(ctx); ++ return 0; ++ } ++ /* ++ * Copy the input data to the encrypted data buffer, and pad it ++ * with zeroes. ++ */ ++ memcpy(input_buffer, buf, len); ++ memset(input_buffer + len, 0, buffer_size - len); ++ ++ /* ++ * Attempt to allocate the output buffer. ++ */ ++ output_buffer = (u_char *)malloc(buffer_size); + if (output_buffer == NULL) { + (*ndo->ndo_warning)(ndo, "can't allocate memory for decryption buffer"); ++ free(input_buffer); + EVP_CIPHER_CTX_free(ctx); + return 0; + } +- EVP_Cipher(ctx, output_buffer, buf, len); ++ EVP_Cipher(ctx, output_buffer, input_buffer, buffer_size); + EVP_CIPHER_CTX_free(ctx); + + /* +@@ -249,6 +272,7 @@ int esp_print_decrypt_buffer_by_ikev2(netdissect_options *ndo, + * but changing this would require a more complicated fix. + */ + memcpy(buf, output_buffer, len); ++ free(input_buffer); + free(output_buffer); + + ndo->ndo_packetp = buf; +@@ -666,8 +690,8 @@ esp_print(netdissect_options *ndo, + const u_char *ivoff; + const u_char *p; + EVP_CIPHER_CTX *ctx; +- unsigned int block_size, output_buffer_size; +- u_char *output_buffer; ++ unsigned int block_size, buffer_size; ++ u_char *input_buffer, *output_buffer; + #endif + + esp = (const struct newesp *)bp; +@@ -784,21 +808,43 @@ esp_print(netdissect_options *ndo, + len = ep - (p + ivlen); + + /* +- * Allocate a buffer for the decrypted data. +- * The output buffer must be separate from the +- * input buffer, and its size must be a multiple +- * of the cipher block size. ++ * Allocate buffers for the encrypted and decrypted ++ * data. Both buffers' sizes must be a multiple of ++ * the cipher block size, and the output buffer must ++ * be separate from the input buffer. + */ + block_size = (unsigned int)EVP_CIPHER_CTX_block_size(ctx); +- output_buffer_size = len + (block_size - len % block_size); +- output_buffer = (u_char *)malloc(output_buffer_size); ++ buffer_size = len + (block_size - len % block_size); ++ ++ /* ++ * Attempt to allocate the input buffer. ++ */ ++ input_buffer = (u_char *)malloc(buffer_size); ++ if (input_buffer == NULL) { ++ (*ndo->ndo_warning)(ndo, "can't allocate memory for encrypted data buffer"); ++ EVP_CIPHER_CTX_free(ctx); ++ return 0; ++ } ++ /* ++ * Copy the input data to the encrypted data buffer, ++ * and pad it with zeroes. ++ */ ++ memcpy(input_buffer, p + ivlen, len); ++ memset(input_buffer + len, 0, buffer_size - len); ++ ++ /* ++ * Attempt to allocate the output buffer. ++ */ ++ output_buffer = (u_char *)malloc(buffer_size); + if (output_buffer == NULL) { + (*ndo->ndo_warning)(ndo, "can't allocate memory for decryption buffer"); ++ free(input_buffer); + EVP_CIPHER_CTX_free(ctx); + return -1; + } + +- EVP_Cipher(ctx, output_buffer, p + ivlen, len); ++ EVP_Cipher(ctx, output_buffer, input_buffer, len); ++ free(input_buffer); + EVP_CIPHER_CTX_free(ctx); + /* + * XXX - of course this is wrong, because buf is a diff --git a/0012-Add-printing-support-for-vsockmon-devices.patch b/0012-Add-printing-support-for-vsockmon-devices.patch new file mode 100644 index 0000000..0808c3e --- /dev/null +++ b/0012-Add-printing-support-for-vsockmon-devices.patch @@ -0,0 +1,318 @@ +From 66a5b93dee386bc2f57033a150341752923b8b41 Mon Sep 17 00:00:00 2001 +From: Gerard Garcia +Date: Tue, 14 Jun 2016 16:45:44 +0200 +Subject: [PATCH 13/13] Add printing support for vsockmon devices. + +Print Linux 4.12 vsockmon captures: + + # modprobe vsockmon + # ip link add type vsockmon + # ip link set vsockmon0 up + # tcpdump -i vsockmon0 + 16:25:24.987917 VIRTIO 3.1025 > 2.1234 CONNECT, length 76 + 16:25:24.987963 VIRTIO 2.1234 > 3.1025 CONNECT, length 76 + 16:25:26.568271 VIRTIO 3.1025 > 2.1234 PAYLOAD, length 82 + 16:25:26.568512 VIRTIO 2.1234 > 3.1025 CONTROL, length 76 + 16:25:28.411335 VIRTIO 3.1025 > 2.1234 DISCONNECT, length 76 + 16:25:28.411628 VIRTIO 2.1234 > 3.1025 DISCONNECT, length 76 + +For more information about vsock see: +http://wiki.qemu.org/Features/VirtioVsock +--- + Makefile.in | 1 + + netdissect.h | 1 + + print-vsock.c | 243 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + print.c | 3 + + 4 files changed, 248 insertions(+) + create mode 100644 print-vsock.c + +diff --git a/Makefile.in b/Makefile.in +index 0941f0e..a301878 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -226,6 +226,7 @@ LIBNETDISSECT_SRC=\ + print-vjc.c \ + print-vqp.c \ + print-vrrp.c \ ++ print-vsock.c \ + print-vtp.c \ + print-vxlan.c \ + print-vxlan-gpe.c \ +diff --git a/netdissect.h b/netdissect.h +index 089b040..c89fcf1 100644 +--- a/netdissect.h ++++ b/netdissect.h +@@ -444,6 +444,7 @@ extern u_int symantec_if_print IF_PRINTER_ARGS; + extern u_int token_if_print IF_PRINTER_ARGS; + extern u_int usb_linux_48_byte_print IF_PRINTER_ARGS; + extern u_int usb_linux_64_byte_print IF_PRINTER_ARGS; ++extern u_int vsock_print IF_PRINTER_ARGS; + + /* + * Structure passed to some printers to allow them to print +diff --git a/print-vsock.c b/print-vsock.c +new file mode 100644 +index 0000000..fc5694d +--- /dev/null ++++ b/print-vsock.c +@@ -0,0 +1,243 @@ ++/* ++ * Copyright (c) 2016 Gerard Garcia ++ * Copyright (c) 2017 Red Hat, Inc. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * 3. The names of the authors may not be used to endorse or promote ++ * products derived from this software without specific prior ++ * written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ++ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++ */ ++ ++/* \summary: Linux vsock printer */ ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include ++#include ++ ++#include "netdissect.h" ++#include "extract.h" ++ ++static const char tstr[] = " [|vsock]"; ++ ++enum af_vsockmon_transport { ++ AF_VSOCK_TRANSPORT_UNKNOWN = 0, ++ AF_VSOCK_TRANSPORT_NO_INFO = 1, /* No transport information */ ++ AF_VSOCK_TRANSPORT_VIRTIO = 2, /* Virtio transport header */ ++}; ++ ++static const struct tok vsock_transport[] = { ++ {AF_VSOCK_TRANSPORT_UNKNOWN, "UNKNOWN"}, ++ {AF_VSOCK_TRANSPORT_NO_INFO, "NO_INFO"}, ++ {AF_VSOCK_TRANSPORT_VIRTIO, "VIRTIO"}, ++ { 0, NULL } ++}; ++ ++enum af_vsockmon_op { ++ AF_VSOCK_OP_UNKNOWN = 0, ++ AF_VSOCK_OP_CONNECT = 1, ++ AF_VSOCK_OP_DISCONNECT = 2, ++ AF_VSOCK_OP_CONTROL = 3, ++ AF_VSOCK_OP_PAYLOAD = 4, ++}; ++ ++static const struct tok vsock_op[] = { ++ {AF_VSOCK_OP_UNKNOWN, "UNKNOWN"}, ++ {AF_VSOCK_OP_CONNECT, "CONNECT"}, ++ {AF_VSOCK_OP_DISCONNECT, "DISCONNECT"}, ++ {AF_VSOCK_OP_CONTROL, "CONTROL"}, ++ {AF_VSOCK_OP_PAYLOAD, "PAYLOAD"}, ++ { 0, NULL } ++}; ++ ++enum virtio_vsock_type { ++ VIRTIO_VSOCK_TYPE_STREAM = 1, ++}; ++ ++static const struct tok virtio_type[] = { ++ {VIRTIO_VSOCK_TYPE_STREAM, "STREAM"}, ++ { 0, NULL } ++}; ++ ++enum virtio_vsock_op { ++ VIRTIO_VSOCK_OP_INVALID = 0, ++ VIRTIO_VSOCK_OP_REQUEST = 1, ++ VIRTIO_VSOCK_OP_RESPONSE = 2, ++ VIRTIO_VSOCK_OP_RST = 3, ++ VIRTIO_VSOCK_OP_SHUTDOWN = 4, ++ VIRTIO_VSOCK_OP_RW = 5, ++ VIRTIO_VSOCK_OP_CREDIT_UPDATE = 6, ++ VIRTIO_VSOCK_OP_CREDIT_REQUEST = 7, ++}; ++ ++static const struct tok virtio_op[] = { ++ {VIRTIO_VSOCK_OP_INVALID, "INVALID"}, ++ {VIRTIO_VSOCK_OP_REQUEST, "REQUEST"}, ++ {VIRTIO_VSOCK_OP_RESPONSE, "RESPONSE"}, ++ {VIRTIO_VSOCK_OP_RST, "RST"}, ++ {VIRTIO_VSOCK_OP_SHUTDOWN, "SHUTDOWN"}, ++ {VIRTIO_VSOCK_OP_RW, "RW"}, ++ {VIRTIO_VSOCK_OP_CREDIT_UPDATE, "CREDIT UPDATE"}, ++ {VIRTIO_VSOCK_OP_CREDIT_REQUEST, "CREDIT REQUEST"}, ++ { 0, NULL } ++}; ++ ++/* All fields are little-endian */ ++ ++struct virtio_vsock_hdr { ++ uint64_t src_cid; ++ uint64_t dst_cid; ++ uint32_t src_port; ++ uint32_t dst_port; ++ uint32_t len; ++ uint16_t type; /* enum virtio_vsock_type */ ++ uint16_t op; /* enum virtio_vsock_op */ ++ uint32_t flags; ++ uint32_t buf_alloc; ++ uint32_t fwd_cnt; ++} UNALIGNED; ++ ++struct af_vsockmon_hdr { ++ uint64_t src_cid; ++ uint64_t dst_cid; ++ uint32_t src_port; ++ uint32_t dst_port; ++ uint16_t op; /* enum af_vsockmon_op */ ++ uint16_t transport; /* enum af_vosckmon_transport */ ++ uint16_t len; /* size of transport header */ ++ uint8_t reserved[2]; ++}; ++ ++static void ++vsock_virtio_hdr_print(netdissect_options *ndo, const struct virtio_vsock_hdr *hdr) ++{ ++ uint16_t u16_v; ++ uint32_t u32_v; ++ ++ u32_v = EXTRACT_LE_32BITS(&hdr->len); ++ ND_PRINT((ndo, "len %u", u32_v)); ++ ++ u16_v = EXTRACT_LE_16BITS(&hdr->type); ++ ND_PRINT((ndo, ", type %s", ++ tok2str(virtio_type, "Invalid type (%hu)", u16_v))); ++ ++ u16_v = EXTRACT_LE_16BITS(&hdr->op); ++ ND_PRINT((ndo, ", op %s", ++ tok2str(virtio_op, "Invalid op (%hu)", u16_v))); ++ ++ u32_v = EXTRACT_LE_32BITS(&hdr->flags); ++ ND_PRINT((ndo, ", flags %x", u32_v)); ++ ++ u32_v = EXTRACT_LE_32BITS(&hdr->buf_alloc); ++ ND_PRINT((ndo, ", buf_alloc %u", u32_v)); ++ ++ u32_v = EXTRACT_LE_32BITS(&hdr->fwd_cnt); ++ ND_PRINT((ndo, ", fwd_cnt %u", u32_v)); ++} ++ ++static size_t ++vsock_transport_hdr_size(uint16_t transport) ++{ ++ switch (transport) { ++ case AF_VSOCK_TRANSPORT_VIRTIO: ++ return sizeof(struct virtio_vsock_hdr); ++ default: ++ return 0; ++ } ++} ++ ++static void ++vsock_transport_hdr_print(netdissect_options *ndo, uint16_t transport, ++ const u_char *p, const u_int len) ++{ ++ size_t transport_size = vsock_transport_hdr_size(transport); ++ const void *hdr; ++ ++ if (len < sizeof(struct af_vsockmon_hdr) + transport_size) ++ return; ++ ++ hdr = p + sizeof(struct af_vsockmon_hdr); ++ switch (transport) { ++ case AF_VSOCK_TRANSPORT_VIRTIO: ++ ND_PRINT((ndo, " (")); ++ vsock_virtio_hdr_print(ndo, hdr); ++ ND_PRINT((ndo, ")")); ++ break; ++ default: ++ break; ++ } ++} ++ ++static void ++vsock_hdr_print(netdissect_options *ndo, const u_char *p, const u_int len) ++{ ++ uint16_t hdr_transport, hdr_op; ++ uint32_t hdr_src_port, hdr_dst_port; ++ uint64_t hdr_src_cid, hdr_dst_cid; ++ size_t total_hdr_size; ++ ++ const struct af_vsockmon_hdr *hdr = (struct af_vsockmon_hdr *)p; ++ ++ hdr_transport = EXTRACT_LE_16BITS(&hdr->transport); ++ ND_PRINT((ndo, "%s", ++ tok2str(vsock_transport, "Invalid transport (%u)", ++ hdr_transport))); ++ ++ /* If verbose level is more than 0 print transport details */ ++ if (ndo->ndo_vflag) { ++ vsock_transport_hdr_print(ndo, hdr_transport, p, len); ++ ND_PRINT((ndo, "\n\t")); ++ } else ++ ND_PRINT((ndo, " ")); ++ ++ hdr_src_cid = EXTRACT_LE_64BITS(&hdr->src_cid); ++ hdr_dst_cid = EXTRACT_LE_64BITS(&hdr->dst_cid); ++ hdr_src_port = EXTRACT_LE_32BITS(&hdr->src_port); ++ hdr_dst_port = EXTRACT_LE_32BITS(&hdr->dst_port); ++ hdr_op = EXTRACT_LE_16BITS(&hdr->op); ++ ND_PRINT((ndo, "%lu.%hu > %lu.%hu %s, length %u", ++ hdr_src_cid, hdr_src_port, ++ hdr_dst_cid, hdr_dst_port, ++ tok2str(vsock_op, " invalid op (%u)", hdr_op), ++ len)); ++ ++ /* If debug level is more than 1 print payload contents */ ++ total_hdr_size = sizeof(struct af_vsockmon_hdr) + ++ vsock_transport_hdr_size(hdr_transport); ++ if (ndo->ndo_vflag > 1 && ++ hdr_op == AF_VSOCK_OP_PAYLOAD && ++ len > total_hdr_size) { ++ const u_char *payload = p + total_hdr_size; ++ ++ ND_PRINT((ndo, "\n")); ++ print_unknown_data(ndo, payload, "\t", len - total_hdr_size); ++ } ++} ++ ++u_int ++vsock_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_char *cp) ++{ ++ u_int len = h->len; ++ ++ if (len < sizeof(struct af_vsockmon_hdr)) ++ ND_PRINT((ndo, "%s", tstr)); ++ else ++ vsock_hdr_print(ndo, cp, len); ++ ++ return len; ++} +diff --git a/print.c b/print.c +index c76f344..1945cfd 100644 +--- a/print.c ++++ b/print.c +@@ -220,6 +220,9 @@ static const struct printer printers[] = { + #ifdef DLT_PPP_SERIAL + { ppp_hdlc_if_print, DLT_PPP_SERIAL }, + #endif ++#ifdef DLT_VSOCK ++ { vsock_print, DLT_VSOCK }, ++#endif + { NULL, 0 }, + }; + +-- +2.13.5 + diff --git a/tcpdump.spec b/tcpdump.spec index 232e4dc..f2f9585 100644 --- a/tcpdump.spec +++ b/tcpdump.spec @@ -2,7 +2,7 @@ Summary: A network traffic monitoring tool Name: tcpdump Epoch: 14 Version: 4.9.1 -Release: 3%{?dist} +Release: 4%{?dist} License: BSD with advertising URL: http://www.tcpdump.org Group: Applications/Internet @@ -21,6 +21,10 @@ Patch0005: 0005-tcpslice-remove-unneeded-include.patch Patch0006: 0006-tcpslice-don-t-test-the-pointer-but-pointee-for-NULL.patch Patch0007: 0007-Introduce-nn-option.patch Patch0008: 0008-Don-t-print-out-we-dropped-root-we-are-always-droppi.patch +Patch0009: 0009-Change-n-flag-to-nn-in-TESTonce.patch +Patch0010: 0010-Expect-miliseconds-instead-of-seconds-in-icmp-captur.patch +Patch0011: 0011-Evp-cipher-buffers.patch +Patch0012: 0012-Add-printing-support-for-vsockmon-devices.patch %define tcpslice_dir tcpslice-1.2a3 @@ -84,6 +88,9 @@ exit 0 %{_mandir}/man8/tcpdump.8* %changelog +* Thu Jun 07 2018 Michal Ruprich - 14:4.9.1-4 +- Adding support for VSOCK + * Thu Aug 03 2017 Fedora Release Engineering - 14:4.9.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild