|
7 | 7 | * Copyright (c) 2017-2022, Intel Corporation |
8 | 8 | */ |
9 | 9 |
|
| 10 | +#include "linux/mptcp_upstream_pm.h" |
10 | 11 | #ifdef HAVE_CONFIG_H |
11 | 12 | # include <mptcpd/private/config.h> |
12 | 13 | #endif |
@@ -133,6 +134,9 @@ struct pm_event_attrs |
133 | 134 |
|
134 | 135 | /// Server side connection event (boolean) |
135 | 136 | uint8_t const *server_side; |
| 137 | + |
| 138 | + /// Event flags |
| 139 | + uint16_t const *flags; |
136 | 140 | }; |
137 | 141 |
|
138 | 142 | /** |
@@ -196,8 +200,10 @@ static void parse_netlink_attributes(struct l_genl_msg *msg, |
196 | 200 | case MPTCP_ATTR_SERVER_SIDE: |
197 | 201 | MPTCP_GET_NL_ATTR(data, len, attrs->server_side); |
198 | 202 | break; |
199 | | - case MPTCP_ATTR_FAMILY: |
200 | 203 | case MPTCP_ATTR_FLAGS: |
| 204 | + MPTCP_GET_NL_ATTR(data, len, attrs->flags); |
| 205 | + break; |
| 206 | + case MPTCP_ATTR_FAMILY: |
201 | 207 | case MPTCP_ATTR_TIMEOUT: |
202 | 208 | case MPTCP_ATTR_RESET_REASON: |
203 | 209 | case MPTCP_ATTR_RESET_FLAGS: |
@@ -253,12 +259,16 @@ static void handle_connection_created(struct pm_event_attrs const *attrs, |
253 | 259 | static char const *const pm_name = NULL; |
254 | 260 | bool const server_side = |
255 | 261 | (attrs->server_side != NULL ? *attrs->server_side : false); |
| 262 | + bool const deny_join_id0 = |
| 263 | + attrs->flags != NULL && |
| 264 | + *attrs->flags & MPTCP_PM_EV_FLAG_DENY_JOIN_ID0; |
256 | 265 |
|
257 | 266 | mptcpd_plugin_new_connection(pm_name, |
258 | 267 | *attrs->token, |
259 | 268 | (struct sockaddr *) &laddr, |
260 | 269 | (struct sockaddr *) &raddr, |
261 | 270 | server_side, |
| 271 | + deny_join_id0, |
262 | 272 | pm); |
263 | 273 | } |
264 | 274 |
|
@@ -305,11 +315,15 @@ static void handle_connection_established(struct pm_event_attrs const *attrs, |
305 | 315 | // Assume server_side is false if event attribute is unavailable. |
306 | 316 | bool const server_side = |
307 | 317 | (attrs->server_side != NULL ? *attrs->server_side : false); |
| 318 | + bool const deny_join_id0 = |
| 319 | + attrs->flags != NULL && |
| 320 | + *attrs->flags & MPTCP_PM_EV_FLAG_DENY_JOIN_ID0; |
308 | 321 |
|
309 | 322 | mptcpd_plugin_connection_established(*attrs->token, |
310 | 323 | (struct sockaddr *) &laddr, |
311 | 324 | (struct sockaddr *) &raddr, |
312 | 325 | server_side, |
| 326 | + deny_join_id0, |
313 | 327 | pm); |
314 | 328 | } |
315 | 329 |
|
|
0 commit comments