Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 
0003 enum linux_mptcp_mib_field {
0004     MPTCP_MIB_NUM = 0,
0005     MPTCP_MIB_MPCAPABLEPASSIVE, /* Received SYN with MP_CAPABLE */
0006     MPTCP_MIB_MPCAPABLEACTIVE,  /* Sent SYN with MP_CAPABLE */
0007     MPTCP_MIB_MPCAPABLEACTIVEACK,   /* Received SYN/ACK with MP_CAPABLE */
0008     MPTCP_MIB_MPCAPABLEPASSIVEACK,  /* Received third ACK with MP_CAPABLE */
0009     MPTCP_MIB_MPCAPABLEPASSIVEFALLBACK,/* Server-side fallback during 3-way handshake */
0010     MPTCP_MIB_MPCAPABLEACTIVEFALLBACK, /* Client-side fallback during 3-way handshake */
0011     MPTCP_MIB_TOKENFALLBACKINIT,    /* Could not init/allocate token */
0012     MPTCP_MIB_RETRANSSEGS,      /* Segments retransmitted at the MPTCP-level */
0013     MPTCP_MIB_JOINNOTOKEN,      /* Received MP_JOIN but the token was not found */
0014     MPTCP_MIB_JOINSYNRX,        /* Received a SYN + MP_JOIN */
0015     MPTCP_MIB_JOINSYNACKRX,     /* Received a SYN/ACK + MP_JOIN */
0016     MPTCP_MIB_JOINSYNACKMAC,    /* HMAC was wrong on SYN/ACK + MP_JOIN */
0017     MPTCP_MIB_JOINACKRX,        /* Received an ACK + MP_JOIN */
0018     MPTCP_MIB_JOINACKMAC,       /* HMAC was wrong on ACK + MP_JOIN */
0019     MPTCP_MIB_DSSNOMATCH,       /* Received a new mapping that did not match the previous one */
0020     MPTCP_MIB_INFINITEMAPTX,    /* Sent an infinite mapping */
0021     MPTCP_MIB_INFINITEMAPRX,    /* Received an infinite mapping */
0022     MPTCP_MIB_DSSTCPMISMATCH,   /* DSS-mapping did not map with TCP's sequence numbers */
0023     MPTCP_MIB_DATACSUMERR,      /* The data checksum fail */
0024     MPTCP_MIB_OFOQUEUETAIL, /* Segments inserted into OoO queue tail */
0025     MPTCP_MIB_OFOQUEUE,     /* Segments inserted into OoO queue */
0026     MPTCP_MIB_OFOMERGE,     /* Segments merged in OoO queue */
0027     MPTCP_MIB_NODSSWINDOW,      /* Segments not in MPTCP windows */
0028     MPTCP_MIB_DUPDATA,      /* Segments discarded due to duplicate DSS */
0029     MPTCP_MIB_ADDADDR,      /* Received ADD_ADDR with echo-flag=0 */
0030     MPTCP_MIB_ECHOADD,      /* Received ADD_ADDR with echo-flag=1 */
0031     MPTCP_MIB_PORTADD,      /* Received ADD_ADDR with a port-number */
0032     MPTCP_MIB_ADDADDRDROP,      /* Dropped incoming ADD_ADDR */
0033     MPTCP_MIB_JOINPORTSYNRX,    /* Received a SYN MP_JOIN with a different port-number */
0034     MPTCP_MIB_JOINPORTSYNACKRX, /* Received a SYNACK MP_JOIN with a different port-number */
0035     MPTCP_MIB_JOINPORTACKRX,    /* Received an ACK MP_JOIN with a different port-number */
0036     MPTCP_MIB_MISMATCHPORTSYNRX,    /* Received a SYN MP_JOIN with a mismatched port-number */
0037     MPTCP_MIB_MISMATCHPORTACKRX,    /* Received an ACK MP_JOIN with a mismatched port-number */
0038     MPTCP_MIB_RMADDR,       /* Received RM_ADDR */
0039     MPTCP_MIB_RMADDRDROP,       /* Dropped incoming RM_ADDR */
0040     MPTCP_MIB_RMSUBFLOW,        /* Remove a subflow */
0041     MPTCP_MIB_MPPRIOTX,     /* Transmit a MP_PRIO */
0042     MPTCP_MIB_MPPRIORX,     /* Received a MP_PRIO */
0043     MPTCP_MIB_MPFAILTX,     /* Transmit a MP_FAIL */
0044     MPTCP_MIB_MPFAILRX,     /* Received a MP_FAIL */
0045     MPTCP_MIB_MPFASTCLOSETX,    /* Transmit a MP_FASTCLOSE */
0046     MPTCP_MIB_MPFASTCLOSERX,    /* Received a MP_FASTCLOSE */
0047     MPTCP_MIB_MPRSTTX,      /* Transmit a MP_RST */
0048     MPTCP_MIB_MPRSTRX,      /* Received a MP_RST */
0049     MPTCP_MIB_RCVPRUNED,        /* Incoming packet dropped due to memory limit */
0050     MPTCP_MIB_SUBFLOWSTALE,     /* Subflows entered 'stale' status */
0051     MPTCP_MIB_SUBFLOWRECOVER,   /* Subflows returned to active status after being stale */
0052     MPTCP_MIB_SNDWNDSHARED,     /* Subflow snd wnd is overridden by msk's one */
0053     MPTCP_MIB_RCVWNDSHARED,     /* Subflow rcv wnd is overridden by msk's one */
0054     MPTCP_MIB_RCVWNDCONFLICTUPDATE, /* subflow rcv wnd is overridden by msk's one due to
0055                      * conflict with another subflow while updating msk rcv wnd
0056                      */
0057     MPTCP_MIB_RCVWNDCONFLICT,   /* Conflict with while updating msk rcv wnd */
0058     __MPTCP_MIB_MAX
0059 };
0060 
0061 #define LINUX_MIB_MPTCP_MAX __MPTCP_MIB_MAX
0062 struct mptcp_mib {
0063     unsigned long mibs[LINUX_MIB_MPTCP_MAX];
0064 };
0065 
0066 static inline void MPTCP_INC_STATS(struct net *net,
0067                    enum linux_mptcp_mib_field field)
0068 {
0069     if (likely(net->mib.mptcp_statistics))
0070         SNMP_INC_STATS(net->mib.mptcp_statistics, field);
0071 }
0072 
0073 static inline void __MPTCP_INC_STATS(struct net *net,
0074                      enum linux_mptcp_mib_field field)
0075 {
0076     if (likely(net->mib.mptcp_statistics))
0077         __SNMP_INC_STATS(net->mib.mptcp_statistics, field);
0078 }
0079 
0080 bool mptcp_mib_alloc(struct net *net);