mptcpd
Multipath TCP Daemon
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 <mptcpd/types.h>
14
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20struct sockaddr;
21
22struct l_genl;
23struct l_genl_family;
24struct l_queue;
25struct l_timeout;
26
28struct mptcpd_addr_info;
29struct mptcpd_limit;
30struct mptcpd_nm;
31struct mptcpd_idm;
32
43{
48 struct mptcpd_config const *config;
49
52
54 struct l_genl *genl;
55
57 unsigned int id;
58
65 struct l_genl_family *family;
66
74 struct l_timeout *timeout;
75
83 struct mptcpd_nm *nm;
84
91 struct mptcpd_idm *idm;
92
94 struct l_queue *event_ops;
95};
96
97// -------------------------------------------------------------------
98
105{
107 struct mptcpd_pm_ops const *ops;
108
111};
112
123{
141 int (*add_addr)(struct mptcpd_pm *pm,
142 struct sockaddr const *addr,
143 mptcpd_aid_t id,
144 mptcpd_token_t token);
145
155 int (*remove_addr)(struct mptcpd_pm *pm,
156 mptcpd_aid_t address_id,
157 mptcpd_token_t token);
158
178 int (*add_subflow)(struct mptcpd_pm *pm,
179 mptcpd_token_t token,
180 mptcpd_aid_t local_address_id,
181 mptcpd_aid_t remote_address_id,
182 struct sockaddr const *local_addr,
183 struct sockaddr const *remote_addr,
184 bool backup);
185
199 int (*remove_subflow)(struct mptcpd_pm *pm,
200 mptcpd_token_t token,
201 struct sockaddr const *local_addr,
202 struct sockaddr const *remote_addr);
203
219 int (*set_backup)(struct mptcpd_pm *pm,
220 mptcpd_token_t token,
221 struct sockaddr const *local_addr,
222 struct sockaddr const *remote_addr,
223 bool backup);
224};
225
235{
254 int (*add_addr)(struct mptcpd_pm *pm,
255 struct sockaddr const *addr,
256 mptcpd_aid_t id,
257 uint32_t flags,
258 int index);
259
269 int (*remove_addr)(struct mptcpd_pm *pm,
270 mptcpd_aid_t address_id);
271
280
297 int (*get_addr)(struct mptcpd_pm *pm,
300 void *data,
301 mptcpd_complete_func_t complete);
302
320 int (*dump_addrs)(struct mptcpd_pm *pm,
322 void *data,
323 mptcpd_complete_func_t complete);
324
335 int (*flush_addrs)(struct mptcpd_pm *pm);
336
347 int (*set_limits)(struct mptcpd_pm *pm,
348 struct mptcpd_limit const *limits,
349 size_t len);
350
363 int (*get_limits)(struct mptcpd_pm *pm,
365 void *data);
366
377 int (*set_flags)(struct mptcpd_pm *pm,
378 struct sockaddr const *addr,
379 mptcpd_flags_t flags);
380};
381
382
383#ifdef __cplusplus
384}
385#endif
386
387#endif /* MPTCPD_PRIVATE_PATH_MANAGER_H */
388
389/*
390 Local Variables:
391 c-file-style: "linux"
392 End:
393*/
Information associated with a network address.
Definition: addr_info.h:32
mptcpd configuration parameters
Definition: configuration.h:29
Internal mptcpd address ID manager data.
Definition: id_manager.c:45
Kernel-side MPTCP path management netlink commands.
Definition: path_manager.h:235
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:297
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:320
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:254
int(* set_limits)(struct mptcpd_pm *pm, struct mptcpd_limit const *limits, size_t len)
Set MPTCP resource limits.
Definition: path_manager.h:347
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:377
int(* flush_addrs)(struct mptcpd_pm *pm)
Flush MPTCP addresses.
Definition: path_manager.h:335
int(* get_limits)(struct mptcpd_pm *pm, mptcpd_pm_get_limits_cb callback, void *data)
Get MPTCP resource limits.
Definition: path_manager.h:363
int(* remove_addr)(struct mptcpd_pm *pm, mptcpd_aid_t address_id)
Stop advertising network address to peers.
Definition: path_manager.h:269
MPTCP resource type/limit pair.
Definition: types.h:97
Data needed to run the network monitor.
Definition: network_monitor.c:63
MPTCP path management generic netlink command functions.
Definition: path_manager.h:123
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:199
int(* remove_addr)(struct mptcpd_pm *pm, mptcpd_aid_t address_id, mptcpd_token_t token)
Stop advertising network address to peers.
Definition: path_manager.h:155
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:178
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:219
int(* add_addr)(struct mptcpd_pm *pm, struct sockaddr const *addr, mptcpd_aid_t id, mptcpd_token_t token)
Advertise new network address to peers.
Definition: path_manager.h:141
Path manager event tracking operations.
Definition: path_manager.h:40
Data needed to run the path manager.
Definition: path_manager.h:43
struct l_queue * event_ops
List of pm_ops_info objects.
Definition: path_manager.h:94
struct l_timeout * timeout
"mptcp" generic netlink family timeout object.
Definition: path_manager.h:74
unsigned int id
MPTCP generic netlink multicast notification ID.
Definition: path_manager.h:57
struct l_genl * genl
Core ELL generic netlink object.
Definition: path_manager.h:54
struct mptcpd_config const * config
Mptcpd configuration.
Definition: path_manager.h:48
struct mptcpd_nm * nm
Network device monitor.
Definition: path_manager.h:83
struct l_genl_family * family
MPTCP generic netlink family.
Definition: path_manager.h:65
struct mptcpd_idm * idm
MPTCP address ID manager.
Definition: path_manager.h:91
struct mptcpd_netlink_pm const * netlink_pm
Kernel MPTCP generic netlink path manager details.
Definition: path_manager.h:51
Path manager event tracking callback information.
Definition: path_manager.h:105
struct mptcpd_pm_ops const * ops
Path manager event tracking operations.
Definition: path_manager.h:107
void * user_data
Data passed to the event tracking operations.
Definition: path_manager.h:110
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:118
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:160
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:144
uint8_t mptcpd_aid_t
MPTCP address ID type.
Definition: types.h:29