OpenVPN
Data Structures | Macros | Typedefs | Functions
packet_id.h File Reference
#include "circ_list.h"
#include "buffer.h"
#include "error.h"
#include "otime.h"
Include dependency graph for packet_id.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  packet_id_rec
 
struct  packet_id_persist
 
struct  packet_id_persist_file_image
 
struct  packet_id_send
 
struct  packet_id_net
 
struct  packet_id
 

Macros

#define PACKET_ID_MAX   UINT32_MAX
 
#define PACKET_ID_WRAP_TRIGGER   0xFF000000
 
#define htonpid(x)   htonl(x)
 
#define ntohpid(x)   ntohl(x)
 
#define htontime(x)   htonl((net_time_t)x)
 
#define ntohtime(x)   ((time_t)ntohl(x))
 
#define packet_id_format   "%u"
 
#define MIN_SEQ_BACKTRACK   0
 
#define MAX_SEQ_BACKTRACK   65536
 
#define DEFAULT_SEQ_BACKTRACK   64
 
#define MIN_TIME_BACKTRACK   0
 
#define MAX_TIME_BACKTRACK   600
 
#define DEFAULT_TIME_BACKTRACK   15
 
#define SEQ_REAP_INTERVAL   5
 

Typedefs

typedef uint32_t packet_id_type
 
typedef uint32_t net_time_t
 
typedef unsigned int packet_id_print_type
 

Functions

 CIRC_LIST (seq_list, time_t)
 
void packet_id_init (struct packet_id *p, int seq_backtrack, int time_backtrack, const char *name, int unit)
 
void packet_id_free (struct packet_id *p)
 
bool packet_id_test (struct packet_id_rec *p, const struct packet_id_net *pin)
 
void packet_id_add (struct packet_id_rec *p, const struct packet_id_net *pin)
 
void packet_id_reap (struct packet_id_rec *p)
 
void packet_id_persist_init (struct packet_id_persist *p)
 
void packet_id_persist_close (struct packet_id_persist *p)
 
void packet_id_persist_load (struct packet_id_persist *p, const char *filename)
 
void packet_id_persist_save (struct packet_id_persist *p)
 
void packet_id_persist_load_obj (const struct packet_id_persist *p, struct packet_id *pid)
 
const char * packet_id_persist_print (const struct packet_id_persist *p, struct gc_arena *gc)
 
bool packet_id_read (struct packet_id_net *pin, struct buffer *buf, bool long_form)
 
bool packet_id_write (struct packet_id_send *p, struct buffer *buf, bool long_form, bool prepend)
 Write a packet ID to buf, and update the packet ID state. More...
 
static bool packet_id_initialized (const struct packet_id *pid)
 Is this struct packet_id initialized? More...
 
static bool packet_id_persist_enabled (const struct packet_id_persist *p)
 
static void packet_id_persist_save_obj (struct packet_id_persist *p, const struct packet_id *pid)
 
const char * packet_id_net_print (const struct packet_id_net *pin, bool print_timestamp, struct gc_arena *gc)
 
static int packet_id_size (bool long_form)
 
static bool packet_id_close_to_wrapping (const struct packet_id_send *p)
 
static bool check_timestamp_delta (time_t remote, unsigned int max_delta)
 
static void packet_id_reap_test (struct packet_id_rec *p)
 

Macro Definition Documentation

◆ DEFAULT_SEQ_BACKTRACK

#define DEFAULT_SEQ_BACKTRACK   64

Definition at line 107 of file packet_id.h.

Referenced by init_options().

◆ DEFAULT_TIME_BACKTRACK

#define DEFAULT_TIME_BACKTRACK   15

Definition at line 116 of file packet_id.h.

Referenced by init_options().

◆ htonpid

#define htonpid (   x)    htonl(x)

Definition at line 63 of file packet_id.h.

Referenced by packet_id_write(), reliable_ack_write(), and reliable_mark_active_outgoing().

◆ htontime

#define htontime (   x)    htonl((net_time_t)x)

Definition at line 69 of file packet_id.h.

Referenced by packet_id_write().

◆ MAX_SEQ_BACKTRACK

#define MAX_SEQ_BACKTRACK   65536

Definition at line 106 of file packet_id.h.

Referenced by add_option(), and packet_id_init().

◆ MAX_TIME_BACKTRACK

#define MAX_TIME_BACKTRACK   600

Definition at line 115 of file packet_id.h.

Referenced by add_option(), and packet_id_init().

◆ MIN_SEQ_BACKTRACK

#define MIN_SEQ_BACKTRACK   0

Definition at line 105 of file packet_id.h.

Referenced by add_option(), and packet_id_init().

◆ MIN_TIME_BACKTRACK

#define MIN_TIME_BACKTRACK   0

Definition at line 114 of file packet_id.h.

Referenced by add_option(), and packet_id_init().

◆ ntohpid

#define ntohpid (   x)    ntohl(x)

◆ ntohtime

#define ntohtime (   x)    ((time_t)ntohl(x))

Definition at line 72 of file packet_id.h.

Referenced by packet_id_read().

◆ packet_id_format

#define packet_id_format   "%u"

◆ PACKET_ID_MAX

#define PACKET_ID_MAX   UINT32_MAX

Definition at line 52 of file packet_id.h.

Referenced by packet_id_send_update().

◆ PACKET_ID_WRAP_TRIGGER

#define PACKET_ID_WRAP_TRIGGER   0xFF000000

Definition at line 60 of file packet_id.h.

Referenced by packet_id_close_to_wrapping().

◆ SEQ_REAP_INTERVAL

#define SEQ_REAP_INTERVAL   5

Definition at line 125 of file packet_id.h.

Referenced by packet_id_reap_test().

Typedef Documentation

◆ net_time_t

Definition at line 53 of file packet_id.h.

◆ packet_id_print_type

typedef unsigned int packet_id_print_type

Definition at line 98 of file packet_id.h.

◆ packet_id_type

Definition at line 51 of file packet_id.h.

Function Documentation

◆ check_timestamp_delta()

static bool check_timestamp_delta ( time_t  remote,
unsigned int  max_delta 
)
inlinestatic

Definition at line 319 of file packet_id.h.

References now.

◆ CIRC_LIST()

CIRC_LIST ( seq_list  ,
time_t   
)

◆ packet_id_add()

void packet_id_add ( struct packet_id_rec p,
const struct packet_id_net pin 
)

◆ packet_id_close_to_wrapping()

static bool packet_id_close_to_wrapping ( const struct packet_id_send p)
inlinestatic

Definition at line 313 of file packet_id.h.

References packet_id_send::id, and PACKET_ID_WRAP_TRIGGER.

Referenced by tls_process().

◆ packet_id_free()

void packet_id_free ( struct packet_id p)

◆ packet_id_init()

void packet_id_init ( struct packet_id p,
int  seq_backtrack,
int  time_backtrack,
const char *  name,
int  unit 
)

◆ packet_id_initialized()

static bool packet_id_initialized ( const struct packet_id pid)
inlinestatic

◆ packet_id_net_print()

const char* packet_id_net_print ( const struct packet_id_net pin,
bool  print_timestamp,
struct gc_arena gc 
)

◆ packet_id_persist_close()

void packet_id_persist_close ( struct packet_id_persist p)

◆ packet_id_persist_enabled()

static bool packet_id_persist_enabled ( const struct packet_id_persist p)
inlinestatic

◆ packet_id_persist_init()

void packet_id_persist_init ( struct packet_id_persist p)

◆ packet_id_persist_load()

void packet_id_persist_load ( struct packet_id_persist p,
const char *  filename 
)

◆ packet_id_persist_load_obj()

void packet_id_persist_load_obj ( const struct packet_id_persist p,
struct packet_id pid 
)

◆ packet_id_persist_print()

const char* packet_id_persist_print ( const struct packet_id_persist p,
struct gc_arena gc 
)

◆ packet_id_persist_save()

void packet_id_persist_save ( struct packet_id_persist p)

◆ packet_id_persist_save_obj()

static void packet_id_persist_save_obj ( struct packet_id_persist p,
const struct packet_id pid 
)
inlinestatic

◆ packet_id_read()

bool packet_id_read ( struct packet_id_net pin,
struct buffer buf,
bool  long_form 
)

◆ packet_id_reap()

void packet_id_reap ( struct packet_id_rec p)

◆ packet_id_reap_test()

static void packet_id_reap_test ( struct packet_id_rec p)
inlinestatic

◆ packet_id_size()

static int packet_id_size ( bool  long_form)
inlinestatic

◆ packet_id_test()

bool packet_id_test ( struct packet_id_rec p,
const struct packet_id_net pin 
)

◆ packet_id_write()

bool packet_id_write ( struct packet_id_send p,
struct buffer buf,
bool  long_form,
bool  prepend 
)

Write a packet ID to buf, and update the packet ID state.

Parameters
pPacket ID state.
bufBuffer to write the packet ID too
long_formIf true, also update and write time_t to buf
prependIf true, prepend to buffer, otherwise apppend.
Returns
true if successful, false otherwise.

Definition at line 351 of file packet_id.c.

References buf_write(), buf_write_prepend(), htonpid, htontime, packet_id_send::id, packet_id_send_update(), and packet_id_send::time.

Referenced by openvpn_encrypt_aead(), openvpn_encrypt_v1(), test_packet_id_write_long(), test_packet_id_write_long_prepend(), test_packet_id_write_long_wrap(), test_packet_id_write_short(), test_packet_id_write_short_prepend(), test_packet_id_write_short_wrap(), and tls_crypt_wrap().