Florian Westphal | fc51895 | 2020-03-27 14:48:50 -0700 | [diff] [blame^] | 1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
| 2 | |
| 3 | enum linux_mptcp_mib_field { |
| 4 | MPTCP_MIB_NUM = 0, |
| 5 | MPTCP_MIB_MPCAPABLEPASSIVE, /* Received SYN with MP_CAPABLE */ |
| 6 | MPTCP_MIB_MPCAPABLEPASSIVEACK, /* Received third ACK with MP_CAPABLE */ |
| 7 | MPTCP_MIB_MPCAPABLEPASSIVEFALLBACK,/* Server-side fallback during 3-way handshake */ |
| 8 | MPTCP_MIB_MPCAPABLEACTIVEFALLBACK, /* Client-side fallback during 3-way handshake */ |
| 9 | MPTCP_MIB_RETRANSSEGS, /* Segments retransmitted at the MPTCP-level */ |
| 10 | MPTCP_MIB_JOINNOTOKEN, /* Received MP_JOIN but the token was not found */ |
| 11 | MPTCP_MIB_JOINSYNRX, /* Received a SYN + MP_JOIN */ |
| 12 | MPTCP_MIB_JOINSYNACKRX, /* Received a SYN/ACK + MP_JOIN */ |
| 13 | MPTCP_MIB_JOINSYNACKMAC, /* HMAC was wrong on SYN/ACK + MP_JOIN */ |
| 14 | MPTCP_MIB_JOINACKRX, /* Received an ACK + MP_JOIN */ |
| 15 | MPTCP_MIB_JOINACKMAC, /* HMAC was wrong on ACK + MP_JOIN */ |
| 16 | MPTCP_MIB_DSSNOMATCH, /* Received a new mapping that did not match the previous one */ |
| 17 | MPTCP_MIB_INFINITEMAPRX, /* Received an infinite mapping */ |
| 18 | __MPTCP_MIB_MAX |
| 19 | }; |
| 20 | |
| 21 | #define LINUX_MIB_MPTCP_MAX __MPTCP_MIB_MAX |
| 22 | struct mptcp_mib { |
| 23 | unsigned long mibs[LINUX_MIB_MPTCP_MAX]; |
| 24 | }; |
| 25 | |
| 26 | static inline void MPTCP_INC_STATS(struct net *net, |
| 27 | enum linux_mptcp_mib_field field) |
| 28 | { |
| 29 | if (likely(net->mib.mptcp_statistics)) |
| 30 | SNMP_INC_STATS(net->mib.mptcp_statistics, field); |
| 31 | } |
| 32 | |
| 33 | static inline void __MPTCP_INC_STATS(struct net *net, |
| 34 | enum linux_mptcp_mib_field field) |
| 35 | { |
| 36 | if (likely(net->mib.mptcp_statistics)) |
| 37 | __SNMP_INC_STATS(net->mib.mptcp_statistics, field); |
| 38 | } |
| 39 | |
| 40 | bool mptcp_mib_alloc(struct net *net); |