OpenVPN
|
#include "basic.h"
#include "buffer.h"
#include "packet_id.h"
#include "session_id.h"
#include "mtu.h"
Go to the source code of this file.
Data Structures | |
struct | reliable_ack |
The acknowledgment structure in which packet IDs are stored for later acknowledgment. More... | |
struct | reliable_entry |
The structure in which the reliability layer stores a single incoming or outgoing packet. More... | |
struct | reliable |
The reliability layer storage structure for one VPN tunnel's control channel in one direction. More... | |
Macros | |
#define | RELIABLE_ACK_SIZE 8 |
The maximum number of packet IDs waiting to be acknowledged which can be stored in one reliable_ack structure. More... | |
#define | RELIABLE_CAPACITY 12 |
The maximum number of packets that the reliability layer for one VPN tunnel in one direction can store. More... | |
#define | N_ACK_RETRANSMIT 3 |
We retry sending a packet early if this many later packets have been ACKed. More... | |
#define | ACK_SIZE(n) (sizeof(uint8_t) + ((n) ? SID_SIZE : 0) + sizeof(packet_id_type) * (n)) |
Functions | |
Functions for processing incoming acknowledgments | |
bool | reliable_ack_read (struct reliable_ack *ack, struct buffer *buf, const struct session_id *sid) |
Read an acknowledgment record from a received packet. More... | |
bool | reliable_ack_parse (struct buffer *buf, struct reliable_ack *ack, struct session_id *session_id_remote) |
Parse an acknowledgment record from a received packet. More... | |
void | reliable_send_purge (struct reliable *rel, const struct reliable_ack *ack) |
Remove acknowledged packets from a reliable structure. More... | |
Functions for processing outgoing acknowledgments | |
static bool | reliable_ack_empty (struct reliable_ack *ack) |
Check whether an acknowledgment structure contains any packet IDs to be acknowledged. More... | |
static int | reliable_ack_outstanding (struct reliable_ack *ack) |
Returns the number of packets that need to be acked. More... | |
bool | reliable_ack_write (struct reliable_ack *ack, struct reliable_ack *ack_mru, struct buffer *buf, const struct session_id *sid, int max, bool prepend) |
Write a packet ID acknowledgment record to a buffer. More... | |
Functions for initialization and cleanup | |
void | reliable_init (struct reliable *rel, int buf_size, int offset, int array_size, bool hold) |
Initialize a reliable structure. More... | |
void | reliable_free (struct reliable *rel) |
Free allocated memory associated with a reliable structure and the pointer itself. More... | |
Functions for inserting incoming packets | |
bool | reliable_can_get (const struct reliable *rel) |
Check whether a reliable structure has any free buffers available for use. More... | |
bool | reliable_not_replay (const struct reliable *rel, packet_id_type id) |
Check that a received packet's ID is not a replay. More... | |
bool | reliable_wont_break_sequentiality (const struct reliable *rel, packet_id_type id) |
Check that a received packet's ID can safely be stored in the reliable structure's processing window. More... | |
bool | reliable_ack_read_packet_id (struct buffer *buf, packet_id_type *pid) |
Read the packet ID of a received packet. More... | |
struct buffer * | reliable_get_buf (struct reliable *rel) |
Get the buffer of a free reliable entry in which to store a packet. More... | |
void | reliable_mark_active_incoming (struct reliable *rel, struct buffer *buf, packet_id_type pid, int opcode) |
Mark the reliable entry associated with the given buffer as active incoming. More... | |
bool | reliable_ack_acknowledge_packet_id (struct reliable_ack *ack, packet_id_type pid) |
Record a packet ID for later acknowledgment. More... | |
Functions for extracting incoming packets | |
struct reliable_entry * | reliable_get_entry_sequenced (struct reliable *rel) |
Get the buffer of the next sequential and active entry. More... | |
void | copy_acks_to_mru (struct reliable_ack *ack, struct reliable_ack *ack_mru, int n) |
Copies the first n acks from ack to ack_mru . More... | |
void | reliable_mark_deleted (struct reliable *rel, struct buffer *buf) |
Remove an entry from a reliable structure. More... | |
Functions for inserting outgoing packets | |
struct buffer * | reliable_get_buf_output_sequenced (struct reliable *rel) |
Get the buffer of free reliable entry and check whether the outgoing acknowledgment sequence is still okay. More... | |
int | reliable_get_num_output_sequenced_available (struct reliable *rel) |
Counts the number of free buffers in output that can be potentially used for sending. More... | |
void | reliable_mark_active_outgoing (struct reliable *rel, struct buffer *buf, int opcode) |
Mark the reliable entry associated with the given buffer as active outgoing. More... | |
Functions for extracting outgoing packets | |
bool | reliable_can_send (const struct reliable *rel) |
Check whether a reliable structure has any active entries ready to be (re)sent. More... | |
struct buffer * | reliable_send (struct reliable *rel, int *opcode) |
Get the next packet to send to the remote peer. More... | |
Miscellaneous functions | |
bool | reliable_empty (const struct reliable *rel) |
Check whether a reliable structure is empty. More... | |
interval_t | reliable_send_timeout (const struct reliable *rel) |
Determined how many seconds until the earliest resend should be attempted. More... | |
void | reliable_schedule_now (struct reliable *rel) |
Reschedule all entries of a reliable structure to be ready for (re)sending immediately. More... | |
void | reliable_debug_print (const struct reliable *rel, char *desc) |
static void | reliable_set_timeout (struct reliable *rel, interval_t timeout) |
const char * | reliable_ack_print (struct buffer *buf, bool verbose, struct gc_arena *gc) |
void | reliable_ack_debug_print (const struct reliable_ack *ack, char *desc) |
Reliability Layer module header file.
Definition in file reliable.h.