Helium
pmtud.h
Go to the documentation of this file.
1 
26 #ifndef PMTUD_H
27 #define PMTUD_H
28 
29 #include "he.h"
30 
33 #define MAX_PROBES 3
34 
36 #define MIN_PLPMTU 512
37 
39 #define MAX_PLPMTU \
40  (HE_MAX_WIRE_MTU - HE_IPV4_HEADER_SIZE - HE_UDP_HEADER_SIZE - sizeof(he_wire_hdr_t) - \
41  HE_WOLF_MAX_HEADER_SIZE - sizeof(he_msg_data_t))
42 
44 #define INITIAL_PLPMTU 1250
45 
47 #define PMTUD_PROBE_TIMEOUT_MS 5000
48 
50 #define PMTUD_PROBE_BIG_STEP 32
51 
53 #define PMTUD_PROBE_SMALL_STEP 8
54 
56 #define PMTUD_ERROR_RETRY_TIMEOUT_MS (60 * 1000)
57 
58 // The time to retry for successful PMTU search
59 #define PMTUD_SUCCESSFUL_SEARCH_RETRY_TIMEOUT_MS (10 * 60 * 1000)
60 
61 // Internal functions for PMTUD
62 
70 
80 
89 
98 
107 
116 
127 
139 
148 
159 
160 #endif // PMTUD_H
he_internal_pmtud_base_confirmed
he_return_code_t he_internal_pmtud_base_confirmed(he_conn_t *conn)
Called when the acknowledgement of current BASE_PLPMTU probing received.
Definition: pmtud.c:233
he_return_code_t
enum he_return_code he_return_code_t
All possible return codes for helium.
he_internal_pmtud_blackhole_detected
he_return_code_t he_internal_pmtud_blackhole_detected(he_conn_t *conn)
Called when a black hole situation is detected.
Definition: pmtud.c:303
he_internal_pmtud_start_searching
he_return_code_t he_internal_pmtud_start_searching(he_conn_t *conn)
Called when probing for the BASE_PLPMTU completes.
he_internal_pmtud_start_base_probing
he_return_code_t he_internal_pmtud_start_base_probing(he_conn_t *conn)
Start PMTUD discovery and change state to BASE.
Definition: pmtud.c:202
he_internal_pmtud_handle_probe_ack
he_return_code_t he_internal_pmtud_handle_probe_ack(he_conn_t *conn, uint16_t probe_id)
Called when the conn receives an acknowledgement of a probe message.
Definition: pmtud.c:96
he_internal_pmtud_handle_probe_timeout
he_return_code_t he_internal_pmtud_handle_probe_timeout(he_conn_t *conn)
Called when the timer of a probe expired.
Definition: pmtud.c:148
he_internal_pmtud_confirm_base_failed
he_return_code_t he_internal_pmtud_confirm_base_failed(he_conn_t *conn)
Called when current state is BASE and PROBE_COUNT reaches MAX_PROBES.
Definition: pmtud.c:259
he.h
Core public header file for libhelium.
he_internal_pmtud_search_completed
he_return_code_t he_internal_pmtud_search_completed(he_conn_t *conn)
Called when the PROBE_COUNT reaches MAX_PROBES, a validated PTB is received that corresponds to the l...
Definition: pmtud.c:279
he_internal_pmtud_send_probe
he_return_code_t he_internal_pmtud_send_probe(he_conn_t *conn, uint16_t probe_mtu)
Send PMTUD probe message with the given probe mtu size.
Definition: pmtud.c:47
he_internal_pmtud_retry_probe
he_return_code_t he_internal_pmtud_retry_probe(he_conn_t *conn, int delay_ms)
Called when we want to retry probing.
Definition: pmtud.c:329
he_conn
Definition: he_internal.h:170