mptcpd
Multipath TCP Daemon
Loading...
Searching...
No Matches
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 <stdbool.h>
14
15#include <mptcpd/export.h>
16#include <mptcpd/types.h>
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22struct sockaddr;
23struct mptcpd_pm;
24struct mptcpd_addr_info;
25
42{
52 void (*ready)(struct mptcpd_pm *pm, void *user_data);
53
64 void (*not_ready)(struct mptcpd_pm *pm, void *user_data);
65};
66
83MPTCPD_API bool mptcpd_pm_register_ops(struct mptcpd_pm *pm,
84 struct mptcpd_pm_ops const *ops,
85 void *user_data);
86
100MPTCPD_API bool mptcpd_pm_ready(struct mptcpd_pm const *pm);
101
109
126MPTCPD_API int mptcpd_pm_add_addr(struct mptcpd_pm *pm,
127 struct sockaddr *addr,
128 mptcpd_aid_t id,
129 mptcpd_token_t token);
130
144MPTCPD_API int mptcpd_pm_add_addr_no_listener(struct mptcpd_pm *pm,
145 struct sockaddr *addr,
146 mptcpd_aid_t id,
147 mptcpd_token_t token);
148
163MPTCPD_API int mptcpd_pm_remove_addr(struct mptcpd_pm *pm,
164 struct sockaddr const *addr,
165 mptcpd_aid_t address_id,
166 mptcpd_token_t token);
167
188MPTCPD_API int
190 mptcpd_token_t token,
191 mptcpd_aid_t local_address_id,
192 mptcpd_aid_t remote_address_id,
193 struct sockaddr const *local_addr,
194 struct sockaddr const *remote_addr,
195 bool backup);
196
211MPTCPD_API int mptcpd_pm_set_backup(
212 struct mptcpd_pm *pm,
213 mptcpd_token_t token,
214 struct sockaddr const *local_addr,
215 struct sockaddr const *remote_addr,
216 bool backup);
217
230MPTCPD_API int mptcpd_pm_remove_subflow(
231 struct mptcpd_pm *pm,
232 mptcpd_token_t token,
233 struct sockaddr const *local_addr,
234 struct sockaddr const *remote_addr);
236
245
264MPTCPD_API int mptcpd_kpm_add_addr(struct mptcpd_pm *pm,
265 struct sockaddr const *addr,
266 mptcpd_aid_t id,
267 mptcpd_flags_t flags,
268 int index);
269
281MPTCPD_API int mptcpd_kpm_remove_addr(struct mptcpd_pm *pm,
282 mptcpd_aid_t address_id);
283
298MPTCPD_API int mptcpd_kpm_get_addr(struct mptcpd_pm *pm,
299 mptcpd_aid_t id,
301 void *data,
302 mptcpd_complete_func_t complete);
303
318MPTCPD_API int mptcpd_kpm_dump_addrs(struct mptcpd_pm *pm,
320 void *data,
321 mptcpd_complete_func_t complete);
322
332MPTCPD_API int mptcpd_kpm_flush_addrs(struct mptcpd_pm *pm);
333
343MPTCPD_API int mptcpd_kpm_set_limits(struct mptcpd_pm *pm,
344 struct mptcpd_limit const *limits,
345 size_t len);
346
357MPTCPD_API int mptcpd_kpm_get_limits(struct mptcpd_pm *pm,
359 void *data);
360
371MPTCPD_API int mptcpd_kpm_set_flags(struct mptcpd_pm *pm,
372 struct sockaddr const *addr,
373 mptcpd_flags_t flags);
374
376
384MPTCPD_API struct mptcpd_nm const *
385mptcpd_pm_get_nm(struct mptcpd_pm const *pm);
386
397MPTCPD_API struct mptcpd_idm *
398mptcpd_pm_get_idm(struct mptcpd_pm const *pm);
399
410MPTCPD_API struct mptcpd_lm *
411mptcpd_pm_get_lm(struct mptcpd_pm const *pm);
412
413#ifdef __cplusplus
414}
415#endif
416
417#endif // MPTCPD_LIB_PATH_MANAGER_H
418
419/*
420 Local Variables:
421 c-file-style: "linux"
422 End:
423*/
mptcpd shared library symbol export/import macros.
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:380
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:350
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:214
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:325
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:195
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:260
MPTCPD_API int mptcpd_kpm_flush_addrs(struct mptcpd_pm *pm)
Flush MPTCP addresses.
Definition path_manager.c:159
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:139
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:42
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:276
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:375
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:176
MPTCPD_API int mptcpd_pm_add_addr_no_listener(struct mptcpd_pm *pm, struct sockaddr *addr, mptcpd_aid_t id, mptcpd_token_t token)
Advertise new network address to peers without creating a listener.
Definition path_manager.c:268
MPTCPD_API bool mptcpd_pm_ready(struct mptcpd_pm const *pm)
Is mptcpd path manager ready for use?
Definition path_manager.c:69
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:118
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:76
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:101
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:385
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:296
Information associated with a network address.
Definition addr_info.h:32
Internal mptcpd address ID manager data.
Definition id_manager.c:45
MPTCP resource type/limit pair.
Definition types.h:100
Internal mptcpd listern manager data.
Definition listener_manager.c:43
Data needed to run the network monitor.
Definition network_monitor.c:64
Path manager event tracking operations.
Definition path_manager.h:42
void(* not_ready)(struct mptcpd_pm *pm, void *user_data)
Callback triggered when the path manager is not ready.
Definition path_manager.h:64
void(* ready)(struct mptcpd_pm *pm, void *user_data)
Callback triggered when the path manager is ready.
Definition path_manager.h:52
Data needed to run the path manager.
Definition path_manager.h:46
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