RTRlib
rtr.h
1 /*
2  * This file is part of RTRlib.
3  *
4  * This file is subject to the terms and conditions of the MIT license.
5  * See the file LICENSE in the top level directory for more details.
6  *
7  * Website: http://rtrlib.realmv6.org/
8  */
9 
17 #ifndef RTR_H
18 #define RTR_H
19 #include <pthread.h>
20 #include <stdbool.h>
21 #include <stdint.h>
22 
23 enum rtr_rtvals { RTR_SUCCESS = 0, RTR_ERROR = -1, RTR_INVALID_PARAM = -2 };
24 
31 
34 
37 
40 };
41 
48 
53 
56 
59 
62 
65 
68 
71 
74 
77 
80 };
81 
82 struct rtr_socket;
83 
87 typedef void (*rtr_connection_state_fp)(const struct rtr_socket *rtr_socket, const enum rtr_socket_state state,
88  void *connection_state_fp_param_config, void *connection_state_fp_param_group);
89 
116 struct rtr_socket {
117  struct tr_socket *tr_socket;
118  unsigned int refresh_interval;
119  time_t last_update;
120  unsigned int expire_interval;
121  unsigned int retry_interval;
122  enum rtr_interval_mode iv_mode;
123  enum rtr_socket_state state;
124  uint32_t session_id;
125  bool request_session_id;
126  uint32_t serial_number;
127  struct pfx_table *pfx_table;
128  pthread_t thread_id;
129  rtr_connection_state_fp connection_state_fp;
130  void *connection_state_fp_param_config;
131  void *connection_state_fp_param_group;
132  unsigned int version;
133  bool has_received_pdus;
134  struct spki_table *spki_table;
135  bool is_resetting;
136 };
137 
144 const char *rtr_state_to_str(enum rtr_socket_state state);
145 
153 
160 #endif
161 
RTR_ERROR_NO_DATA_AVAIL
@ RTR_ERROR_NO_DATA_AVAIL
Definition: rtr.h:64
rtr_socket_state
rtr_socket_state
States of the RTR socket.
Definition: rtr.h:45
RTR_INTERVAL_MODE_IGNORE_ON_FAILURE
@ RTR_INTERVAL_MODE_IGNORE_ON_FAILURE
Definition: rtr.h:39
rtr_socket
A RTR socket.
Definition: rtr.h:116
RTR_INTERVAL_MODE_ACCEPT_ANY
@ RTR_INTERVAL_MODE_ACCEPT_ANY
Definition: rtr.h:33
RTR_INTERVAL_MODE_IGNORE_ANY
@ RTR_INTERVAL_MODE_IGNORE_ANY
Definition: rtr.h:30
RTR_SHUTDOWN
@ RTR_SHUTDOWN
Definition: rtr.h:76
RTR_ERROR_NO_INCR_UPDATE_AVAIL
@ RTR_ERROR_NO_INCR_UPDATE_AVAIL
Definition: rtr.h:67
RTR_FAST_RECONNECT
@ RTR_FAST_RECONNECT
Definition: rtr.h:61
rtr_state_to_str
const char * rtr_state_to_str(enum rtr_socket_state state)
Converts a rtr_socket_state to a String.
RTR_ERROR_TRANSPORT
@ RTR_ERROR_TRANSPORT
Definition: rtr.h:73
RTR_ESTABLISHED
@ RTR_ESTABLISHED
Definition: rtr.h:52
tr_socket
A transport socket datastructure.
Definition: transport.h:102
RTR_RESET
@ RTR_RESET
Definition: rtr.h:55
rtr_set_interval_mode
void rtr_set_interval_mode(struct rtr_socket *rtr_socket, enum rtr_interval_mode option)
Set the interval option to the desired one. It's either RTR_INTERVAL_MODE_IGNORE_ANY,...
pfx_table
pfx_table.
Definition: trie-pfx.h:65
rtr_connection_state_fp
void(* rtr_connection_state_fp)(const struct rtr_socket *rtr_socket, const enum rtr_socket_state state, void *connection_state_fp_param_config, void *connection_state_fp_param_group)
A function pointer that is called if the state of the rtr socket has changed.
Definition: rtr.h:87
RTR_ERROR_FATAL
@ RTR_ERROR_FATAL
Definition: rtr.h:70
RTR_INTERVAL_MODE_DEFAULT_MIN_MAX
@ RTR_INTERVAL_MODE_DEFAULT_MIN_MAX
Definition: rtr.h:36
rtr_get_interval_mode
enum rtr_interval_mode rtr_get_interval_mode(struct rtr_socket *rtr_socket)
Get the current interval mode.
RTR_CONNECTING
@ RTR_CONNECTING
Definition: rtr.h:47
rtr_interval_mode
rtr_interval_mode
These modes let the user configure how received intervals should be handled.
Definition: rtr.h:28
RTR_SYNC
@ RTR_SYNC
Definition: rtr.h:58
RTR_CLOSED
@ RTR_CLOSED
Definition: rtr.h:79