linux/drivers/net/wireguard/receive.c

// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (C) 2015-2019 Jason A. Donenfeld <[email protected]>. All Rights Reserved.
 */

#include "queueing.h"
#include "device.h"
#include "peer.h"
#include "timers.h"
#include "messages.h"
#include "cookie.h"
#include "socket.h"

#include <linux/ip.h>
#include <linux/ipv6.h>
#include <linux/udp.h>
#include <net/ip_tunnels.h>

/* Must be called with bh disabled. */
static void update_rx_stats(struct wg_peer *peer, size_t len)
{}

#define SKB_TYPE_LE32(skb)

static size_t validate_header_len(struct sk_buff *skb)
{}

static int prepare_skb_header(struct sk_buff *skb, struct wg_device *wg)
{}

static void wg_receive_handshake_packet(struct wg_device *wg,
					struct sk_buff *skb)
{}

void wg_packet_handshake_receive_worker(struct work_struct *work)
{}

static void keep_key_fresh(struct wg_peer *peer)
{}

static bool decrypt_packet(struct sk_buff *skb, struct noise_keypair *keypair)
{}

/* This is RFC6479, a replay detection bitmap algorithm that avoids bitshifts */
static bool counter_validate(struct noise_replay_counter *counter, u64 their_counter)
{}

#include "selftest/counter.c"

static void wg_packet_consume_data_done(struct wg_peer *peer,
					struct sk_buff *skb,
					struct endpoint *endpoint)
{}

int wg_packet_rx_poll(struct napi_struct *napi, int budget)
{}

void wg_packet_decrypt_worker(struct work_struct *work)
{}

static void wg_packet_consume_data(struct wg_device *wg, struct sk_buff *skb)
{}

void wg_packet_receive(struct wg_device *wg, struct sk_buff *skb)
{}