diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2017-03-06 15:13:23 +0000 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2017-03-06 15:13:23 +0000 |
| commit | eba44e9339fc13c36e24c8c59e2b73ea231b46a1 (patch) | |
| tree | 738208c7e3504fc23aaf4ae80ab549943d5a47f9 /net/filter-rewriter.c | |
| parent | 56b51708e9e22809d2a78f38d0ac84bb3f3fca92 (diff) | |
| parent | f0aabd5c4ae11fde704d138e8f06c69e5c902a16 (diff) | |
| download | focaccia-qemu-eba44e9339fc13c36e24c8c59e2b73ea231b46a1.tar.gz focaccia-qemu-eba44e9339fc13c36e24c8c59e2b73ea231b46a1.zip | |
Merge remote-tracking branch 'remotes/jasowang/tags/net-pull-request' into staging
# gpg: Signature made Mon 06 Mar 2017 04:15:17 GMT # gpg: using RSA key 0xEF04965B398D6211 # gpg: Good signature from "Jason Wang (Jason Wang on RedHat) <jasowang@redhat.com>" # gpg: WARNING: This key is not certified with sufficiently trusted signatures! # gpg: It is not certain that the signature belongs to the owner. # Primary key fingerprint: 215D 46F4 8246 689E C77F 3562 EF04 965B 398D 6211 * remotes/jasowang/tags/net-pull-request: net/filter-mirror: Follow CODING_STYLE COLO-compare: Fix icmp and udp compare different packet always dump bug COLO-compare: Optimize compare_common and compare_tcp COLO-compare: Rename compare function and remove duplicate codes filter-rewriter: skip net_checksum_calculate() while offset = 0 net/colo: fix memory double free error vmxnet3: VMStatify rx/tx q_descr and int_state vmxnet3: Convert ring values to uint32_t's net/colo-compare: Fix memory free error colo-compare: Fix removing fds been watched incorrectly in finalization char: remove the right fd been watched in qemu_chr_fe_set_handlers() colo-compare: kick compare thread to exit after some cleanup in finalization colo-compare: use g_timeout_source_new() to process the stale packets NetRxPkt: Remove code duplication in net_rx_pkt_pull_data() NetRxPkt: Account buffer with ETH header in IOV length NetRxPkt: Do not try to pull more data than present NetRxPkt: Fix memory corruption on VLAN header stripping eth: Extend vlan stripping functions net: Remove useless local var pkt Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'net/filter-rewriter.c')
| -rw-r--r-- | net/filter-rewriter.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/net/filter-rewriter.c b/net/filter-rewriter.c index c4ab91cdee..afa06e8919 100644 --- a/net/filter-rewriter.c +++ b/net/filter-rewriter.c @@ -93,10 +93,12 @@ static int handle_primary_tcp_pkt(NetFilterState *nf, conn->offset -= (ntohl(tcp_pkt->th_ack) - 1); conn->syn_flag = 0; } - /* handle packets to the secondary from the primary */ - tcp_pkt->th_ack = htonl(ntohl(tcp_pkt->th_ack) + conn->offset); + if (conn->offset) { + /* handle packets to the secondary from the primary */ + tcp_pkt->th_ack = htonl(ntohl(tcp_pkt->th_ack) + conn->offset); - net_checksum_calculate((uint8_t *)pkt->data, pkt->size); + net_checksum_calculate((uint8_t *)pkt->data, pkt->size); + } } return 0; @@ -129,10 +131,13 @@ static int handle_secondary_tcp_pkt(NetFilterState *nf, } if ((tcp_pkt->th_flags & (TH_ACK | TH_SYN)) == TH_ACK) { - /* handle packets to the primary from the secondary*/ - tcp_pkt->th_seq = htonl(ntohl(tcp_pkt->th_seq) - conn->offset); + /* Only need to adjust seq while offset is Non-zero */ + if (conn->offset) { + /* handle packets to the primary from the secondary*/ + tcp_pkt->th_seq = htonl(ntohl(tcp_pkt->th_seq) - conn->offset); - net_checksum_calculate((uint8_t *)pkt->data, pkt->size); + net_checksum_calculate((uint8_t *)pkt->data, pkt->size); + } } return 0; |