|
OpenVPN
|
Reliability Layer module header file. More...
#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. | |
| #define | RELIABLE_CAPACITY 12 |
| The maximum number of packets that \ the reliability layer for one VPN \ tunnel in one direction can store. | |
| #define | N_ACK_RETRANSMIT 3 |
| We retry sending a packet early if \ this many later packets have been \ ACKed. | |
| #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. | |
| 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. | |
| void | reliable_send_purge (struct reliable *rel, const struct reliable_ack *ack) |
| Remove acknowledged packets from a reliable structure. | |
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. | |
| static int | reliable_ack_outstanding (struct reliable_ack *ack) |
| Returns the number of packets that need to be acked. | |
| 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. | |
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. | |
| void | reliable_free (struct reliable *rel) |
| Free allocated memory associated with a reliable structure and the pointer itself. | |
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. | |
| bool | reliable_not_replay (const struct reliable *rel, packet_id_type id) |
| Check that a received packet's ID is not a replay. | |
| 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. | |
| bool | reliable_ack_read_packet_id (struct buffer *buf, packet_id_type *pid) |
| Read the packet ID of a received packet. | |
| struct buffer * | reliable_get_buf (struct reliable *rel) |
| Get the buffer of a free reliable entry in which to store a packet. | |
| 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. | |
| bool | reliable_ack_acknowledge_packet_id (struct reliable_ack *ack, packet_id_type pid) |
| Record a packet ID for later acknowledgment. | |
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. | |
| 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. | |
| void | reliable_mark_deleted (struct reliable *rel, struct buffer *buf) |
| Remove an entry from a reliable structure. | |
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. | |
| 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. | |
| 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. | |
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. | |
| struct buffer * | reliable_send (struct reliable *rel, int *opcode) |
| Get the next packet to send to the remote peer. | |
Miscellaneous functions | |
| bool | reliable_empty (const struct reliable *rel) |
| Check whether a reliable structure is empty. | |
| interval_t | reliable_send_timeout (const struct reliable *rel) |
| Determined how many seconds until the earliest resend should be attempted. | |
| void | reliable_schedule_now (struct reliable *rel) |
| Reschedule all entries of a reliable structure to be ready for (re)sending immediately. | |
| 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.