mptcpd
Multipath TCP Daemon
path_manager.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: BSD-3-Clause
10 #ifndef MPTCPD_LIB_PATH_MANAGER_H
11 #define MPTCPD_LIB_PATH_MANAGER_H
12 
13 #include <mptcpd/export.h>
14 #include <mptcpd/types.h>
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 struct sockaddr;
21 struct mptcpd_pm;
22 struct mptcpd_addr_info;
23 
40 {
50  void (*ready)(struct mptcpd_pm *pm, void *user_data);
51 
62  void (*not_ready)(struct mptcpd_pm *pm, void *user_data);
63 };
64 
81 MPTCPD_API bool mptcpd_pm_register_ops(struct mptcpd_pm *pm,
82  struct mptcpd_pm_ops const *ops,
83  void *user_data);
84 
98 MPTCPD_API bool mptcpd_pm_ready(struct mptcpd_pm const *pm);
99 
107 
124 MPTCPD_API int mptcpd_pm_add_addr(struct mptcpd_pm *pm,
125  struct sockaddr *addr,
126  mptcpd_aid_t id,
127  mptcpd_token_t token);
128 
143 MPTCPD_API int mptcpd_pm_remove_addr(struct mptcpd_pm *pm,
144  struct sockaddr const *addr,
145  mptcpd_aid_t address_id,
146  mptcpd_token_t token);
147 
168 MPTCPD_API int
170  mptcpd_token_t token,
171  mptcpd_aid_t local_address_id,
172  mptcpd_aid_t remote_address_id,
173  struct sockaddr const *local_addr,
174  struct sockaddr const *remote_addr,
175  bool backup);
176 
191 MPTCPD_API int mptcpd_pm_set_backup(
192  struct mptcpd_pm *pm,
193  mptcpd_token_t token,
194  struct sockaddr const *local_addr,
195  struct sockaddr const *remote_addr,
196  bool backup);
197 
210 MPTCPD_API int mptcpd_pm_remove_subflow(
211  struct mptcpd_pm *pm,
212  mptcpd_token_t token,
213  struct sockaddr const *local_addr,
214  struct sockaddr const *remote_addr);
216 
225 
243 MPTCPD_API int mptcpd_kpm_add_addr(struct mptcpd_pm *pm,
244  struct sockaddr const *addr,
245  mptcpd_aid_t id,
246  mptcpd_flags_t flags,
247  int index);
248 
260 MPTCPD_API int mptcpd_kpm_remove_addr(struct mptcpd_pm *pm,
261  mptcpd_aid_t address_id);
262 
277 MPTCPD_API int mptcpd_kpm_get_addr(struct mptcpd_pm *pm,
278  mptcpd_aid_t id,
279  mptcpd_kpm_get_addr_cb_t callback,
280  void *data,
281  mptcpd_complete_func_t complete);
282 
297 MPTCPD_API int mptcpd_kpm_dump_addrs(struct mptcpd_pm *pm,
298  mptcpd_kpm_get_addr_cb_t callback,
299  void *data,
300  mptcpd_complete_func_t complete);
301 
311 MPTCPD_API int mptcpd_kpm_flush_addrs(struct mptcpd_pm *pm);
312 
322 MPTCPD_API int mptcpd_kpm_set_limits(struct mptcpd_pm *pm,
323  struct mptcpd_limit const *limits,
324  size_t len);
325 
336 MPTCPD_API int mptcpd_kpm_get_limits(struct mptcpd_pm *pm,
337  mptcpd_pm_get_limits_cb callback,
338  void *data);
339 
349 MPTCPD_API int mptcpd_kpm_set_flags(struct mptcpd_pm *pm,
350  struct sockaddr const *addr,
351  mptcpd_flags_t flags);
352 
354 
362 MPTCPD_API struct mptcpd_nm const *
363 mptcpd_pm_get_nm(struct mptcpd_pm const *pm);
364 
375 MPTCPD_API struct mptcpd_idm *
376 mptcpd_pm_get_idm(struct mptcpd_pm const *pm);
377 
388 MPTCPD_API struct mptcpd_lm *
389 mptcpd_pm_get_lm(struct mptcpd_pm const *pm);
390 
391 #ifdef __cplusplus
392 }
393 #endif
394 
395 #endif // MPTCPD_LIB_PATH_MANAGER_H
396 
397 /*
398  Local Variables:
399  c-file-style: "linux"
400  End:
401 */
mptcpd shared library symbol export/import macros.
MPTCPD_API int mptcpd_pm_remove_subflow(struct mptcpd_pm *pm, mptcpd_token_t token, struct sockaddr const *local_addr, struct sockaddr const *remote_addr)
Remove a subflow.
Definition: path_manager.c:338
MPTCPD_API int mptcpd_kpm_set_flags(struct mptcpd_pm *pm, struct sockaddr const *addr, mptcpd_flags_t flags)
Set MPTCP flags for a local IP address.
Definition: path_manager.c:220
MPTCPD_API int mptcpd_pm_set_backup(struct mptcpd_pm *pm, mptcpd_token_t token, struct sockaddr const *local_addr, struct sockaddr const *remote_addr, bool backup)
Set priority of a subflow.
Definition: path_manager.c:313
MPTCPD_API int mptcpd_kpm_get_limits(struct mptcpd_pm *pm, mptcpd_pm_get_limits_cb callback, void *data)
Get MPTCP resource limits.
Definition: path_manager.c:201
MPTCPD_API int mptcpd_pm_add_addr(struct mptcpd_pm *pm, struct sockaddr *addr, mptcpd_aid_t id, mptcpd_token_t token)
Advertise new network address to peers.
Definition: path_manager.c:241
MPTCPD_API int mptcpd_kpm_flush_addrs(struct mptcpd_pm *pm)
Flush MPTCP addresses.
Definition: path_manager.c:165
MPTCPD_API int mptcpd_kpm_dump_addrs(struct mptcpd_pm *pm, mptcpd_kpm_get_addr_cb_t callback, void *data, mptcpd_complete_func_t complete)
Get list (array) of MPTCP network addresses.
Definition: path_manager.c:145
MPTCPD_API bool mptcpd_pm_register_ops(struct mptcpd_pm *pm, struct mptcpd_pm_ops const *ops, void *user_data)
Subscribe to mptcpd path manager events.
Definition: path_manager.c:48
MPTCPD_API int mptcpd_pm_remove_addr(struct mptcpd_pm *pm, struct sockaddr const *addr, mptcpd_aid_t address_id, mptcpd_token_t token)
Stop advertising network address to peers.
Definition: path_manager.c:264
MPTCPD_API int mptcpd_kpm_set_limits(struct mptcpd_pm *pm, struct mptcpd_limit const *limits, size_t len)
Set MPTCP resource limits.
Definition: path_manager.c:182
MPTCPD_API bool mptcpd_pm_ready(struct mptcpd_pm const *pm)
Is mptcpd path manager ready for use?
Definition: path_manager.c:75
MPTCPD_API struct mptcpd_idm * mptcpd_pm_get_idm(struct mptcpd_pm const *pm)
Get pointer to the global MPTCP address ID manager.
Definition: path_manager.c:368
MPTCPD_API int mptcpd_kpm_get_addr(struct mptcpd_pm *pm, mptcpd_aid_t id, mptcpd_kpm_get_addr_cb_t callback, void *data, mptcpd_complete_func_t complete)
Get network address corresponding to an address ID.
Definition: path_manager.c:124
MPTCPD_API int mptcpd_kpm_add_addr(struct mptcpd_pm *pm, struct sockaddr const *addr, mptcpd_aid_t id, mptcpd_flags_t flags, int index)
Advertise new network address to peers.
Definition: path_manager.c:82
MPTCPD_API struct mptcpd_nm const * mptcpd_pm_get_nm(struct mptcpd_pm const *pm)
Get pointer to the underlying network monitor.
Definition: path_manager.c:363
MPTCPD_API struct mptcpd_lm * mptcpd_pm_get_lm(struct mptcpd_pm const *pm)
Get pointer to the global MPTCP listener manager.
Definition: path_manager.c:373
MPTCPD_API int mptcpd_kpm_remove_addr(struct mptcpd_pm *pm, mptcpd_aid_t address_id)
Stop advertising network address to peers.
Definition: path_manager.c:107
MPTCPD_API int mptcpd_pm_add_subflow(struct mptcpd_pm *pm, mptcpd_token_t token, mptcpd_aid_t local_address_id, mptcpd_aid_t remote_address_id, struct sockaddr const *local_addr, struct sockaddr const *remote_addr, bool backup)
Create a new subflow.
Definition: path_manager.c:284
Information associated with a network address.
Definition: addr_info.h:32
Internal mptcpd address ID manager data.
Definition: id_manager.c:53
MPTCP resource type/limit pair.
Definition: types.h:100
Internal mptcpd listern manager data.
Definition: listener_manager.c:49
Data needed to run the network monitor.
Definition: network_monitor.c:72
Path manager event tracking operations.
Definition: path_manager.h:40
void(* not_ready)(struct mptcpd_pm *pm, void *user_data)
Callback triggered when the path manager is not ready.
Definition: path_manager.h:62
void(* ready)(struct mptcpd_pm *pm, void *user_data)
Callback triggered when the path manager is ready.
Definition: path_manager.h:50
Data needed to run the path manager.
Definition: path_manager.h:44
mptcpd user space path manager attribute types.
void(* mptcpd_kpm_get_addr_cb_t)(struct mptcpd_addr_info const *info, void *callback_data)
Type of function called when an address is available.
Definition: types.h:121
uint32_t mptcpd_flags_t
MPTCP flags type.
Definition: types.h:51
void(* mptcpd_pm_get_limits_cb)(struct mptcpd_limit const *limits, size_t len, void *callback_data)
Type of function called when MPTCP resource limits are available.
Definition: types.h:163
uint32_t mptcpd_token_t
MPTCP connection token type.
Definition: types.h:26
void(* mptcpd_complete_func_t)(void *user_data)
Type of function called on asynchronous call completion.
Definition: types.h:147
uint8_t mptcpd_aid_t
MPTCP address ID type.
Definition: types.h:29