diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-09-28 15:34:14 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-10-02 02:45:53 +0200 |
commit | 9c6f27b2513ea07fa3aa452db28f5dbb8ae04606 (patch) | |
tree | c48509c5c01cefc44bee2f475370a2de9a4b3cd2 /src/receive.c | |
parent | peer: ensure that lookup tables are added last (diff) | |
download | wireguard-monolithic-historical-9c6f27b2513ea07fa3aa452db28f5dbb8ae04606.tar.xz wireguard-monolithic-historical-9c6f27b2513ea07fa3aa452db28f5dbb8ae04606.zip |
receive: do not consider netfilter drop a real drop
Diffstat (limited to 'src/receive.c')
-rw-r--r-- | src/receive.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/src/receive.c b/src/receive.c index ae79354..68683c0 100644 --- a/src/receive.c +++ b/src/receive.c @@ -277,7 +277,6 @@ static void packet_consume_data_done(struct sk_buff *skb, struct wireguard_peer goto dishonest_packet_size; if (INET_ECN_is_ce(PACKET_CB(skb)->ds)) IP_ECN_set_ce(ip_hdr(skb)); - } else if (skb->protocol == htons(ETH_P_IPV6)) { len = ntohs(ipv6_hdr(skb)->payload_len) + sizeof(struct ipv6hdr); if (INET_ECN_is_ce(PACKET_CB(skb)->ds)) @@ -299,12 +298,11 @@ static void packet_consume_data_done(struct sk_buff *skb, struct wireguard_peer goto dishonest_packet_peer; len = skb->len; - if (likely(netif_receive_skb(skb) == NET_RX_SUCCESS)) - rx_stats(peer, len); - else { + if (unlikely(netif_receive_skb(skb) == NET_RX_DROP)) { ++dev->stats.rx_dropped; net_dbg_ratelimited("%s: Failed to give packet to userspace from peer %Lu (%pISpfsc)\n", dev->name, peer->internal_id, &peer->endpoint.addr); - } + } else + rx_stats(peer, len); goto continue_processing; dishonest_packet_peer: |