2020-03-28 00:48:50 +03:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
enum linux_mptcp_mib_field {
MPTCP_MIB_NUM = 0 ,
MPTCP_MIB_MPCAPABLEPASSIVE , /* Received SYN with MP_CAPABLE */
2021-04-02 02:19:42 +03:00
MPTCP_MIB_MPCAPABLEACTIVE , /* Sent SYN with MP_CAPABLE */
MPTCP_MIB_MPCAPABLEACTIVEACK , /* Received SYN/ACK with MP_CAPABLE */
2020-03-28 00:48:50 +03:00
MPTCP_MIB_MPCAPABLEPASSIVEACK , /* Received third ACK with MP_CAPABLE */
MPTCP_MIB_MPCAPABLEPASSIVEFALLBACK , /* Server-side fallback during 3-way handshake */
MPTCP_MIB_MPCAPABLEACTIVEFALLBACK , /* Client-side fallback during 3-way handshake */
2021-04-02 02:19:41 +03:00
MPTCP_MIB_TOKENFALLBACKINIT , /* Could not init/allocate token */
2020-03-28 00:48:50 +03:00
MPTCP_MIB_RETRANSSEGS , /* Segments retransmitted at the MPTCP-level */
MPTCP_MIB_JOINNOTOKEN , /* Received MP_JOIN but the token was not found */
MPTCP_MIB_JOINSYNRX , /* Received a SYN + MP_JOIN */
MPTCP_MIB_JOINSYNACKRX , /* Received a SYN/ACK + MP_JOIN */
MPTCP_MIB_JOINSYNACKMAC , /* HMAC was wrong on SYN/ACK + MP_JOIN */
MPTCP_MIB_JOINACKRX , /* Received an ACK + MP_JOIN */
MPTCP_MIB_JOINACKMAC , /* HMAC was wrong on ACK + MP_JOIN */
MPTCP_MIB_DSSNOMATCH , /* Received a new mapping that did not match the previous one */
2022-04-23 00:55:41 +03:00
MPTCP_MIB_INFINITEMAPTX , /* Sent an infinite mapping */
2020-03-28 00:48:50 +03:00
MPTCP_MIB_INFINITEMAPRX , /* Received an infinite mapping */
2021-06-22 01:54:37 +03:00
MPTCP_MIB_DSSTCPMISMATCH , /* DSS-mapping did not map with TCP's sequence numbers */
2021-06-18 02:46:18 +03:00
MPTCP_MIB_DATACSUMERR , /* The data checksum fail */
2020-09-14 11:01:14 +03:00
MPTCP_MIB_OFOQUEUETAIL , /* Segments inserted into OoO queue tail */
MPTCP_MIB_OFOQUEUE , /* Segments inserted into OoO queue */
MPTCP_MIB_OFOMERGE , /* Segments merged in OoO queue */
MPTCP_MIB_NODSSWINDOW , /* Segments not in MPTCP windows */
MPTCP_MIB_DUPDATA , /* Segments discarded due to duplicate DSS */
2020-09-24 03:29:51 +03:00
MPTCP_MIB_ADDADDR , /* Received ADD_ADDR with echo-flag=0 */
MPTCP_MIB_ECHOADD , /* Received ADD_ADDR with echo-flag=1 */
2021-02-02 02:09:19 +03:00
MPTCP_MIB_PORTADD , /* Received ADD_ADDR with a port-number */
2022-02-19 00:35:42 +03:00
MPTCP_MIB_ADDADDRDROP , /* Dropped incoming ADD_ADDR */
2021-02-02 02:09:19 +03:00
MPTCP_MIB_JOINPORTSYNRX , /* Received a SYN MP_JOIN with a different port-number */
MPTCP_MIB_JOINPORTSYNACKRX , /* Received a SYNACK MP_JOIN with a different port-number */
MPTCP_MIB_JOINPORTACKRX , /* Received an ACK MP_JOIN with a different port-number */
MPTCP_MIB_MISMATCHPORTSYNRX , /* Received a SYN MP_JOIN with a mismatched port-number */
MPTCP_MIB_MISMATCHPORTACKRX , /* Received an ACK MP_JOIN with a mismatched port-number */
2020-09-24 03:29:56 +03:00
MPTCP_MIB_RMADDR , /* Received RM_ADDR */
2022-02-19 00:35:42 +03:00
MPTCP_MIB_RMADDRDROP , /* Dropped incoming RM_ADDR */
2020-09-24 03:29:56 +03:00
MPTCP_MIB_RMSUBFLOW , /* Remove a subflow */
2021-01-09 03:48:01 +03:00
MPTCP_MIB_MPPRIOTX , /* Transmit a MP_PRIO */
MPTCP_MIB_MPPRIORX , /* Received a MP_PRIO */
2021-08-25 02:26:18 +03:00
MPTCP_MIB_MPFAILTX , /* Transmit a MP_FAIL */
MPTCP_MIB_MPFAILRX , /* Received a MP_FAIL */
2022-03-04 22:36:27 +03:00
MPTCP_MIB_MPFASTCLOSETX , /* Transmit a MP_FASTCLOSE */
MPTCP_MIB_MPFASTCLOSERX , /* Received a MP_FASTCLOSE */
2022-03-04 22:36:29 +03:00
MPTCP_MIB_MPRSTTX , /* Transmit a MP_RST */
MPTCP_MIB_MPRSTRX , /* Received a MP_RST */
2021-07-10 03:20:51 +03:00
MPTCP_MIB_RCVPRUNED , /* Incoming packet dropped due to memory limit */
2021-08-14 01:15:46 +03:00
MPTCP_MIB_SUBFLOWSTALE , /* Subflows entered 'stale' status */
MPTCP_MIB_SUBFLOWRECOVER , /* Subflows returned to active status after being stale */
2022-05-05 00:54:05 +03:00
MPTCP_MIB_SNDWNDSHARED , /* Subflow snd wnd is overridden by msk's one */
2022-05-05 00:54:08 +03:00
MPTCP_MIB_RCVWNDSHARED , /* Subflow rcv wnd is overridden by msk's one */
MPTCP_MIB_RCVWNDCONFLICTUPDATE , /* subflow rcv wnd is overridden by msk's one due to
* conflict with another subflow while updating msk rcv wnd
*/
MPTCP_MIB_RCVWNDCONFLICT , /* Conflict with while updating msk rcv wnd */
2020-03-28 00:48:50 +03:00
__MPTCP_MIB_MAX
} ;
# define LINUX_MIB_MPTCP_MAX __MPTCP_MIB_MAX
struct mptcp_mib {
unsigned long mibs [ LINUX_MIB_MPTCP_MAX ] ;
} ;
static inline void MPTCP_INC_STATS ( struct net * net ,
enum linux_mptcp_mib_field field )
{
if ( likely ( net - > mib . mptcp_statistics ) )
SNMP_INC_STATS ( net - > mib . mptcp_statistics , field ) ;
}
static inline void __MPTCP_INC_STATS ( struct net * net ,
enum linux_mptcp_mib_field field )
{
if ( likely ( net - > mib . mptcp_statistics ) )
__SNMP_INC_STATS ( net - > mib . mptcp_statistics , field ) ;
}
bool mptcp_mib_alloc ( struct net * net ) ;