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_PRIVATE_PATH_MANAGER_H
11#define MPTCPD_PRIVATE_PATH_MANAGER_H
12
13#include <stdbool.h>
14
15#include <mptcpd/types.h>
16
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22struct sockaddr;
23
24struct l_genl;
25struct l_genl_family;
26struct l_queue;
27struct l_timeout;
28
30struct mptcpd_addr_info;
31struct mptcpd_limit;
32struct mptcpd_nm;
33struct mptcpd_idm;
34struct mptcpd_lm;
35
46{
51 struct mptcpd_config const *config;
52
55
57 struct l_genl *genl;
58
60 unsigned int id;
61
68 struct l_genl_family *family;
69
77 struct l_timeout *timeout;
78
86 struct mptcpd_nm *nm;
87
94 struct mptcpd_idm *idm;
95
104 struct mptcpd_lm *lm;
105
107 struct l_queue *event_ops;
108};
109
110// -------------------------------------------------------------------
111
118{
120 struct mptcpd_pm_ops const *ops;
121
124};
125
136{
163 int (*add_addr)(struct mptcpd_pm *pm,
164 struct sockaddr *addr,
165 mptcpd_aid_t id,
166 mptcpd_token_t token,
167 bool listener);
168
181 int (*remove_addr)(struct mptcpd_pm *pm,
182 struct sockaddr const *addr,
183 mptcpd_aid_t id,
184 mptcpd_token_t token);
185
205 int (*add_subflow)(struct mptcpd_pm *pm,
206 mptcpd_token_t token,
207 mptcpd_aid_t local_address_id,
208 mptcpd_aid_t remote_address_id,
209 struct sockaddr const *local_addr,
210 struct sockaddr const *remote_addr,
211 bool backup);
212
226 int (*remove_subflow)(struct mptcpd_pm *pm,
227 mptcpd_token_t token,
228 struct sockaddr const *local_addr,
229 struct sockaddr const *remote_addr);
230
246 int (*set_backup)(struct mptcpd_pm *pm,
247 mptcpd_token_t token,
248 struct sockaddr const *local_addr,
249 struct sockaddr const *remote_addr,
250 bool backup);
251};
252
262{
281 int (*add_addr)(struct mptcpd_pm *pm,
282 struct sockaddr const *addr,
283 mptcpd_aid_t id,
284 uint32_t flags,
285 int index);
286
296 int (*remove_addr)(struct mptcpd_pm *pm,
297 mptcpd_aid_t address_id);
298
307
324 int (*get_addr)(struct mptcpd_pm *pm,
325 mptcpd_aid_t id,
327 void *data,
328 mptcpd_complete_func_t complete);
329
347 int (*dump_addrs)(struct mptcpd_pm *pm,
349 void *data,
350 mptcpd_complete_func_t complete);
351
362 int (*flush_addrs)(struct mptcpd_pm *pm);
363
374 int (*set_limits)(struct mptcpd_pm *pm,
375 struct mptcpd_limit const *limits,
376 size_t len);
377
390 int (*get_limits)(struct mptcpd_pm *pm,
392 void *data);
393
404 int (*set_flags)(struct mptcpd_pm *pm,
405 struct sockaddr const *addr,
406 mptcpd_flags_t flags);
407};
408
409
410#ifdef __cplusplus
411}
412#endif
413
414#endif /* MPTCPD_PRIVATE_PATH_MANAGER_H */
415
416/*
417 Local Variables:
418 c-file-style: "linux"
419 End:
420*/
Information associated with a network address.
Definition addr_info.h:32
mptcpd configuration parameters
Definition configuration.h:31
Internal mptcpd address ID manager data.
Definition id_manager.c:45
Kernel-side MPTCP path management netlink commands.
Definition path_manager.h:262
int(* 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.h:324
int(* dump_addrs)(struct mptcpd_pm *pm, mptcpd_kpm_get_addr_cb_t callback, void *data, mptcpd_complete_func_t complete)
Dump list of network addresses.
Definition path_manager.h:347
int(* add_addr)(struct mptcpd_pm *pm, struct sockaddr const *addr, mptcpd_aid_t id, uint32_t flags, int index)
Advertise new network address to peers.
Definition path_manager.h:281
int(* set_limits)(struct mptcpd_pm *pm, struct mptcpd_limit const *limits, size_t len)
Set MPTCP resource limits.
Definition path_manager.h:374
int(* 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.h:404
int(* flush_addrs)(struct mptcpd_pm *pm)
Flush MPTCP addresses.
Definition path_manager.h:362
int(* get_limits)(struct mptcpd_pm *pm, mptcpd_pm_get_limits_cb callback, void *data)
Get MPTCP resource limits.
Definition path_manager.h:390
int(* remove_addr)(struct mptcpd_pm *pm, mptcpd_aid_t address_id)
Stop advertising network address to peers.
Definition path_manager.h:296
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
MPTCP path management generic netlink command functions.
Definition path_manager.h:136
int(* 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.h:226
int(* remove_addr)(struct mptcpd_pm *pm, struct sockaddr const *addr, mptcpd_aid_t id, mptcpd_token_t token)
Stop advertising network address to peers.
Definition path_manager.h:181
int(* add_addr)(struct mptcpd_pm *pm, struct sockaddr *addr, mptcpd_aid_t id, mptcpd_token_t token, bool listener)
Advertise new network address to peers.
Definition path_manager.h:163
int(* 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.h:205
int(* 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.h:246
Path manager event tracking operations.
Definition path_manager.h:42
Data needed to run the path manager.
Definition path_manager.h:46
struct l_queue * event_ops
List of pm_ops_info objects.
Definition path_manager.h:107
struct l_timeout * timeout
"mptcp" generic netlink family timeout object.
Definition path_manager.h:77
unsigned int id
MPTCP generic netlink multicast notification ID.
Definition path_manager.h:60
struct mptcpd_lm * lm
MPTCP listener manager.
Definition path_manager.h:104
struct l_genl * genl
Core ELL generic netlink object.
Definition path_manager.h:57
struct mptcpd_config const * config
Mptcpd configuration.
Definition path_manager.h:51
struct mptcpd_nm * nm
Network device monitor.
Definition path_manager.h:86
struct l_genl_family * family
MPTCP generic netlink family.
Definition path_manager.h:68
struct mptcpd_idm * idm
MPTCP address ID manager.
Definition path_manager.h:94
struct mptcpd_netlink_pm const * netlink_pm
Kernel MPTCP generic netlink path manager details.
Definition path_manager.h:54
Path manager event tracking callback information.
Definition path_manager.h:118
struct mptcpd_pm_ops const * ops
Path manager event tracking operations.
Definition path_manager.h:120
void * user_data
Data passed to the event tracking operations.
Definition path_manager.h:123
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