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


#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 MAX_SEQ_BACKTRACK   65536
#define MAX_TIME_BACKTRACK   600


typedef uint32_t packet_id_type
typedef uint32_t net_time_t
typedef unsigned int packet_id_print_type


 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)
static void reset_packet_id_send (struct packet_id_send *p)
 Reset the current send packet id to its initial state. More...
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



Definition at line 100 of file packet_id.h.



Definition at line 109 of file packet_id.h.

◆ htonpid

#define htonpid (   x)    htonl(x)

Definition at line 56 of file packet_id.h.

◆ htontime

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

Definition at line 62 of file packet_id.h.


#define MAX_SEQ_BACKTRACK   65536

Definition at line 99 of file packet_id.h.


#define MAX_TIME_BACKTRACK   600

Definition at line 108 of file packet_id.h.



Definition at line 98 of file packet_id.h.



Definition at line 107 of file packet_id.h.

◆ ntohpid

#define ntohpid (   x)    ntohl(x)

Definition at line 59 of file packet_id.h.

◆ ntohtime

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

Definition at line 65 of file packet_id.h.

◆ packet_id_format

#define packet_id_format   "%u"

Definition at line 90 of file packet_id.h.



Definition at line 45 of file packet_id.h.


#define PACKET_ID_WRAP_TRIGGER   0xFF000000

Definition at line 53 of file packet_id.h.



Definition at line 118 of file packet_id.h.

Typedef Documentation

◆ net_time_t

typedef uint32_t net_time_t

Definition at line 46 of file packet_id.h.

◆ packet_id_print_type

typedef unsigned int packet_id_print_type

Definition at line 91 of file packet_id.h.

◆ packet_id_type

typedef uint32_t packet_id_type

Definition at line 44 of file packet_id.h.

Function Documentation

◆ check_timestamp_delta()

static bool check_timestamp_delta ( time_t  remote,
unsigned int  max_delta 

Definition at line 322 of file packet_id.h.

References now.


CIRC_LIST ( seq_list  ,

◆ 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)

Definition at line 316 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)

◆ 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)

◆ 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 

◆ 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)

Definition at line 339 of file packet_id.h.

References packet_id_rec::last_reap, now, packet_id_reap(), and SEQ_REAP_INTERVAL.

Referenced by crypto_check_replay().

◆ packet_id_size()

static int packet_id_size ( bool  long_form)

◆ 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.

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 append.
true if successful, false otherwise.

Definition at line 347 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().

◆ reset_packet_id_send()

static void reset_packet_id_send ( struct packet_id_send p)

Reset the current send packet id to its initial state.

Use very carefully (e.g. in the standalone reset packet context) to avoid sending more than one packet with the same packet id (that is not also a resend like the reset packet)

pthe packet structure to modify

Definition at line 301 of file packet_id.h.

References packet_id_send::id, and packet_id_send::time.

Referenced by send_hmac_reset_packet(), and test_generate_reset_packet_tls_auth().