summaryrefslogtreecommitdiff
path: root/net/net-snmp/patches/patch-dl
blob: c7f60dd4f0f87e3209eaa115860ddcf93457fbcc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
$NetBSD: patch-dl,v 1.4 2008/06/28 16:06:34 christos Exp $

--- agent/mibgroup/mibII/tcp.c.orig	2007-07-16 19:59:44.000000000 -0400
+++ agent/mibgroup/mibII/tcp.c	2008-06-28 11:15:21.000000000 -0400
@@ -177,6 +177,16 @@
 #define USES_TRADITIONAL_TCPSTAT
 #endif
 
+#ifdef TCP_NSTATS
+typedef uint32_t tcp_stats[TCP_NSTATS];
+#define TCP_STAT_STRUCTURE	tcp_stats
+#endif
+
+#ifdef dragonfly
+#define TCP_STAT_STRUCTURE	struct tcp_stats
+#define USES_TRADITIONAL_TCPSTAT
+#endif
+
 #if !defined(TCP_STAT_STRUCTURE)
 #define TCP_STAT_STRUCTURE	struct tcpstat
 #define USES_TRADITIONAL_TCPSTAT
@@ -309,6 +319,75 @@
 #endif			/* linux */
         netsnmp_set_request_error(reqinfo, request, SNMP_NOSUCHOBJECT);
         continue;
+#elif defined(TCP_NSTAT)
+    case TCPRTOALGORITHM:      /* Assume Van Jacobsen's algorithm */
+        ret_value = 4;
+        type = ASN_INTEGER;
+        break;
+    case TCPRTOMIN:
+#ifdef TCPTV_NEEDS_HZ
+        ret_value = TCPTV_MIN;
+#else
+        ret_value = TCPTV_MIN / PR_SLOWHZ * 1000;
+#endif
+        type = ASN_INTEGER;
+        break;
+    case TCPRTOMAX:
+#ifdef TCPTV_NEEDS_HZ
+        ret_value = TCPTV_REXMTMAX;
+#else
+        ret_value = TCPTV_REXMTMAX / PR_SLOWHZ * 1000;
+#endif
+        type = ASN_INTEGER;
+        break;
+    case TCPMAXCONN:
+        ret_value = -1;		/* Dynamic maximum */
+        type = ASN_INTEGER;
+        break;
+    case TCPACTIVEOPENS:
+        ret_value = tcpstat[TCP_STAT_CONNATTEMPT];
+        break;
+    case TCPPASSIVEOPENS:
+        ret_value = tcpstat[TCP_STAT_ACCEPTS];
+        break;
+        /*
+         * NB:  tcps_drops is actually the sum of the two MIB
+         *      counters tcpAttemptFails and tcpEstabResets.
+         */
+    case TCPATTEMPTFAILS:
+        ret_value = tcpstat[TCP_STAT_CONNDROPS];
+        break;
+    case TCPESTABRESETS:
+        ret_value = tcpstat[TCP_STAT_DROPS];
+        break;
+    case TCPCURRESTAB:
+#ifdef USING_MIBII_TCPTABLE_MODULE
+        ret_value = TCP_Count_Connections();
+#else
+        ret_value = 0;
+#endif
+        type = ASN_GAUGE;
+        break;
+    case TCPINSEGS:
+        ret_value = tcpstat[TCP_STAT_RCVTOTAL];
+        break;
+    case TCPOUTSEGS:
+        /*
+         * RFC 1213 defines this as the number of segments sent
+         * "excluding those containing only retransmitted octets"
+         */
+        ret_value = tcpstat[TCP_STAT_SNDTOTAL] - tcpstat[TCP_STAT_SNDREXMITPACK];
+        break;
+    case TCPRETRANSSEGS:
+        ret_value = tcpstat[TCP_STAT_SNDREXMITPACK];
+        break;
+    case TCPINERRS:
+        ret_value = tcpstat[TCP_STAT_RCVBADSUM] + tcpstat[TCP_STAT_RCVBADOFF]
+            + tcpstat[TCP_STAT_RCVMEMDROP] + tcpstat[TCP_STAT_RCVSHORT];
+        break;
+    case TCPOUTRSTS:
+        ret_value = tcpstat[TCP_STAT_SNDCTRL] - tcpstat[TCP_STAT_CLOSED];
+        break;
 #elif defined(USES_TRADITIONAL_TCPSTAT) && !defined(_USE_FIRST_PROTOCOL)
 #ifdef HAVE_SYS_TCPIPSTATS_H
     /*