mptcp: add ADD_ADDR related mibs
authorGeliang Tang <geliangtang@gmail.com>
Thu, 24 Sep 2020 00:29:51 +0000 (08:29 +0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 25 Sep 2020 02:58:33 +0000 (19:58 -0700)
This patch added two mibs for ADD_ADDR, MPTCP_MIB_ADDADDR for receiving
of the ADD_ADDR suboption with echo-flag=0, and MPTCP_MIB_ECHOADD for
receiving the ADD_ADDR suboption with echo-flag=1.

Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Co-developed-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/mptcp/mib.c
net/mptcp/mib.h
net/mptcp/options.c

index 056986c..a33bf71 100644 (file)
@@ -27,6 +27,8 @@ static const struct snmp_mib mptcp_snmp_list[] = {
        SNMP_MIB_ITEM("OFOMerge", MPTCP_MIB_OFOMERGE),
        SNMP_MIB_ITEM("NoDSSInWindow", MPTCP_MIB_NODSSWINDOW),
        SNMP_MIB_ITEM("DuplicateData", MPTCP_MIB_DUPDATA),
+       SNMP_MIB_ITEM("AddAddr", MPTCP_MIB_ADDADDR),
+       SNMP_MIB_ITEM("EchoAdd", MPTCP_MIB_ECHOADD),
        SNMP_MIB_SENTINEL
 };
 
index 937a177..cdeea37 100644 (file)
@@ -20,6 +20,8 @@ enum linux_mptcp_mib_field {
        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 */
+       MPTCP_MIB_ADDADDR,              /* Received ADD_ADDR with echo-flag=0 */
+       MPTCP_MIB_ECHOADD,              /* Received ADD_ADDR with echo-flag=1 */
        __MPTCP_MIB_MAX
 };
 
index a41996e..171039c 100644 (file)
@@ -11,6 +11,7 @@
 #include <net/tcp.h>
 #include <net/mptcp.h>
 #include "protocol.h"
+#include "mib.h"
 
 static bool mptcp_cap_flag_sha256(u8 flags)
 {
@@ -888,8 +889,12 @@ void mptcp_incoming_options(struct sock *sk, struct sk_buff *skb,
                        addr.addr6 = mp_opt.addr6;
                }
 #endif
-               if (!mp_opt.echo)
+               if (!mp_opt.echo) {
                        mptcp_pm_add_addr_received(msk, &addr);
+                       MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_ADDADDR);
+               } else {
+                       MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_ECHOADD);
+               }
                mp_opt.add_addr = 0;
        }