summaryrefslogtreecommitdiff
path: root/agent/mibgroup/etherlike-mib/dot3StatsTable/ioctl_imp_common.h
diff options
context:
space:
mode:
Diffstat (limited to 'agent/mibgroup/etherlike-mib/dot3StatsTable/ioctl_imp_common.h')
-rw-r--r--agent/mibgroup/etherlike-mib/dot3StatsTable/ioctl_imp_common.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/ioctl_imp_common.h b/agent/mibgroup/etherlike-mib/dot3StatsTable/ioctl_imp_common.h
new file mode 100644
index 0000000..ef9232a
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/ioctl_imp_common.h
@@ -0,0 +1,65 @@
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <net/if.h>
+#include <linux/sockios.h>
+#include <ifaddrs.h>
+
+/* use kernel's ethtool.h */
+
+#include <linux/types.h>
+typedef __u64 u64;
+typedef __u32 u32;
+typedef __u16 u16;
+typedef __u8 u8;
+#include <linux/ethtool.h>
+
+/* structure for storing the interface names in the system */
+
+struct ifname {
+ struct ifname *ifn_next;
+ char name [IF_NAMESIZE];
+};
+
+struct ifname *dot3stats_interface_name_list_get (struct ifname *, int *);
+int dot3stats_interface_name_list_free (struct ifname *list_head);
+int dot3stats_interface_ioctl_ifindex_get (int fd, const char *name);
+int _dot3Stats_ioctl_get(int fd, int which, struct ifreq *ifrq, const char* name);
+int interface_ioctl_dot3stats_get(dot3StatsTable_rowreq_ctx *rowreq_ctx, int fd, const char* name);
+int interface_ioctl_dot3stats_duplex_get(dot3StatsTable_rowreq_ctx *rowreq_ctx, int fd, const char* name);
+
+
+/* for maintainability */
+
+#define INTEL_RECEIVE_ALIGN_ERRORS "rx_align_errors"
+#define BROADCOM_RECEIVE_ALIGN_ERRORS INTEL_RECEIVE_ALIGN_ERRORS
+
+#define INTEL_TRANSMIT_MULTIPLE_COLLISIONS "tx_multi_coll_ok"
+#define BROADCOM_TRANSMIT_MULTIPLE_COLLISIONS_BNX2 "tx_multi_collisions"
+#define BROADCOM_TRANSMIT_MULTIPLE_COLLISIONS_TG3 "tx_mult_collisions"
+
+#define INTEL_TRANSMIT_LATE_COLLISIONS "tx_abort_late_coll"
+#define BROADCOM_TRANSMIT_LATE_COLLISIONS "tx_late_collisions"
+
+#define INTEL_TRANSMIT_SINGLE_COLLISIONS "tx_single_coll_ok"
+#define BROADCOM_TRANSMIT_SINGLE_COLLISIONS "tx_single_collisions"
+
+#define BROADCOM_TRANSMIT_EXCESS_COLLISIONS_BNX2 "tx_excess_collisions"
+#define BROADCOM_TRANSMIT_EXCESS_COLLISIONS_TG3 "tx_excessive_collisions"
+
+
+#define DOT3STATSALIGNMENTERRORS(x) strstr(x, INTEL_RECEIVE_ALIGN_ERRORS)
+
+#define DOT3STATSMULTIPLECOLLISIONFRAMES(x) (strstr(x, INTEL_TRANSMIT_MULTIPLE_COLLISIONS)) || \
+ (strstr(x, BROADCOM_TRANSMIT_MULTIPLE_COLLISIONS_BNX2)) || \
+ (strstr(x, BROADCOM_TRANSMIT_MULTIPLE_COLLISIONS_TG3))
+
+#define DOT3STATSLATECOLLISIONS(x) (strstr(x, INTEL_TRANSMIT_LATE_COLLISIONS)) || \
+ (strstr(x, BROADCOM_TRANSMIT_LATE_COLLISIONS))
+
+#define DOT3STATSSINGLECOLLISIONFRAMES(x) (strstr(x, INTEL_TRANSMIT_SINGLE_COLLISIONS)) || \
+ (strstr(x, BROADCOM_TRANSMIT_SINGLE_COLLISIONS))
+
+#define DOT3STATSEXCESSIVECOLLISIONS(x) (strstr(x, BROADCOM_TRANSMIT_EXCESS_COLLISIONS_BNX2)) || \
+ (strstr(x, BROADCOM_TRANSMIT_EXCESS_COLLISIONS_TG3))
+