Files
s390-tools/osasnmpd/ibmOSAMibDefs.h
Michael Holzheu b627b8d8e1 Initial s390-tools-2.0.0 import
This commit is based on the s390-tools-1.39.0 version.

Changes on top of s390-tools-1.39.0:

 - Add MIT license to all source files
 - Add LICENSE file
 - Transform REAMDE to README.md (markdown)
 - Add AUTHORS.md file
 - Add CONTRIBUTING.md file
 - Move changelog from README to CHANGELOG.md file

Reviewed-by: Stefan Haberland <sth@linux.vnet.ibm.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
2017-08-21 10:55:40 +02:00

203 lines
7.7 KiB
C

/*
* osasnmpd - IBM OSA-Express network card SNMP subagent
*
* Defines constants and data structures used by the OSA-E subagent.
*
* Copyright IBM Corp. 2002, 2017
*
* s390-tools is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
*/
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#ifndef NETSNMP_DS_APPLICATION_ID
#define NETSNMP_DS_APPLICATION_ID DS_APPLICATION_ID
#endif
#ifndef NETSNMP_DS_AGENT_ROLE
#define NETSNMP_DS_AGENT_ROLE DS_AGENT_ROLE
#endif
#ifndef NETSNMP_DS_AGENT_X_SOCKET
#define NETSNMP_DS_AGENT_X_SOCKET DS_AGENT_X_SOCKET
#endif
/* version number of this agent */
/* default log file - don't change it here, use parameter -l */
#define OSAE_LOGFILE "/var/log/osasnmpd.log"
/* definitions for subagent to master agent definition */
#define NET_SNMP_PEERNAME "localhost"
#define NET_SNMP_COMMUNITY "public"
/* need this for OSA Express ioctl's */
#define QETH_PROCFILE "/proc/qeth"
#define QETH_IOC_MAGIC 'Z'
#define QETH_IOCPROC_REGISTER _IOW(QETH_IOC_MAGIC, 1, int)
#define QETH_UPDATE_MIB_SIGNAL SIGUSR1
#define QETH_QUERY_IPA_DATA _IOWR(QETH_IOC_MAGIC, 7, int )
#define QETH_CHECK_OSA_DEVICE _IOWR(QETH_IOC_MAGIC, 8, int )
#define IFNAME_MAXLEN 16 /* max length for linux interface names */
#define SUFFIX_MAXLEN 13 /* max length of suffix length for net-snmp */
#define MIB_AREA_LEN 25000 /* default size for register MIB data */
#define MAX_GET_DATA 4094 /* maximum GET response data length */
#define GET_AREA_LEN MAX_GET_DATA + 512 /* size for GET command area length */
#define TIME_BUF_SIZE 128 /* buffer size for date and time string */
#define MAX_OID_STR_LEN MAX_OID_LEN * 5 /* max OID string size */
/* definitions for 2.6 qeth */
#define QETH_SYSFILE "/sys/bus/ccwgroup/drivers/qeth/notifier_register"
#define SIOC_QETH_ADP_SET_SNMP_CONTROL (SIOCDEVPRIVATE + 5)
#define SIOC_QETH_GET_CARD_TYPE (SIOCDEVPRIVATE + 6)
/* some definitions for the linked lists compare and delete functions */
#define OID_FOUND 0
#define OID_NOT_FOUND 1
#define UNEXP_ERROR -1
#define INDEX_FOUND 0
#define INDEX_NOT_FOUND 1
#define IF_ENTRY 0
#define IND_LIST 1
/* additional access types and data types used by IPAssists */
#define IPA_WRONLY 0xF2
#define IPA_DISPLAYSTR ((u_char)0x09)
/* IPAssists SNMP subcommand codes */
#define IPA_REG_MIB 0x04
#define IPA_GET_OID 0x10
#define IPA_SET_OID 0x11
/*#define IPA_QUERY_ALERT 0x20*/
/*#define IPA_SET_TRAP 0x21*/
/* IPAssists command return codes */
#define IPA_SUCCESS 0x00
#define IPA_FAILED 0x01
#define IPA_NOT_SUPP 0x04
#define IPA_NO_DATA 0x08
/* IPAssists SNMP subcommand return codes */
#define IPA_SNMP_SUCCESS 0x00
#define IPA_SNMP_INV_TOPOID 0x01
#define IPA_SNMP_INV_GROUP 0x02
#define IPA_SNMP_INV_SUFFIX 0x04
#define IPA_SNMP_INV_INST 0x08
#define IPA_SNMP_OID_NREAD 0x10
#define IPA_SNMP_OID_NWRIT 0x20
#define IPA_SNMP_NOT_SUPP 0x40
#define IPA_SNMP_NO_DATA 0x80
#define PTR_ALIGN4(addr) ((long)((addr))+3)&(~3) /* align ptr 4-byte bdy */
/***************************************************************/
/* structure used for getting OSA-Express interfaces via ioctl */
/***************************************************************/
#define NAME_FILLED_IN 0x00000001
#define IFINDEX_FILLED_IN 0x00000002
/* version 0 */
typedef struct dev_list
{
char device_name[IFNAME_MAXLEN]; /* OSA-Exp device name (e.g. eth0) */
int if_index; /* interface index from kernel */
__u32 flags; /* device charateristics */
} __attribute__((packed)) DEV_LIST;
typedef struct osaexp_dev_ver0
{
__u32 version; /* structure version */
__u32 valid_fields; /* bitmask of fields that are really filled */
__u32 qeth_version; /* qeth driver version */
__u32 number_of_devices; /* number of OSA Express devices */
struct dev_list devices[0]; /* list of OSA Express devices */
} __attribute__((packed)) OSAEXP_DEV_VER0;
/***************************************************************/
/* ioctl data structure for IPAssists SNMP processing */
/***************************************************************/
typedef struct ioctl_cmd_hdr
{
int data_len; /* total length of buffer passed to ioctl */
/* following the first 16 bytes */
/* in this structure (i.e. starts at token) */
int req_len; /* length of IPAssists SNMP request */
int reserved1; /* unused */
int reserved2; /* unused */
struct {
char token[16]; /* not used */
int request; /* IPA subcommand code */
int ifIndex; /* IF-MIB ifIndex value for interface */
int ret_code; /* IPA return code */
int ipa_ver; /* IPA microcode level (4 hex digits to be shown as xx.yy) */
int seq_num; /* sequence number (currently not used) */
} ipa_cmd_hdr;
} __attribute__((packed)) IOCTL_CMD_HDR;
/***************************************************************/
/* structures for GET/GETNEXT IPAssists processing */
/***************************************************************/
typedef struct ipa_cmd_get
{
IOCTL_CMD_HDR ioctl_cmd; /* IOCTL command header */
char full_oid[0]; /* fully qualified OID for GET/GETNEXT */
} __attribute__((packed)) IPA_CMD_GET;
typedef struct ipa_get_data
{
int len; /* length of returned data from IPA */
char data[0]; /* data returned by IPA */
} __attribute__((packed)) IPA_GET_DATA;
/******************************************************************/
/* struct for IPAssists register MIB data processing */
/******************************************************************/
typedef struct ipa_cmd_reg
{
IOCTL_CMD_HDR ioctl_cmd; /* IPA subcommand header */
int table_cnt; /* number of table toplevel OIDs */
} __attribute__((packed)) IPA_CMD_REG;
/***************************************************************/
/* linked list for table OID housekeeping */
/***************************************************************/
typedef struct table_oid
{
oid *pObjid; /* registered table OID */
size_t length; /* length of subtree OID */
struct variable13 *var13ptr; /* ptr to variable_x list */
struct reg_indices *ind_list; /* ptr to registered indices */
struct table_oid *next; /* ptr to next entry in list */
} TABLE_OID;
/***************************************************************/
/* linked list for OSA Express interfaces housekeeping */
/***************************************************************/
typedef struct reg_indices
{
char *full_index; /* full index portion from IPA */
int ifIndex; /* ifIndex from IF-MIB */
struct reg_indices *next; /* ptr to next entry in list */
} REG_INDICES;
/*******************************************************************/
/* this list keeps information queried from the IF-MIB */
/*******************************************************************/
typedef struct if_List
{
int kerIndex; /* Linux kernel ifIndex */
int ifIndex; /* IF-MIB ifIndex */
short is_OSAEXP; /* TRUE if an OSA Express device */
char if_Name[IFNAME_MAXLEN]; /* interface name (e.g. eth0) */
int ipa_ver; /* IPA microcode level */
} IF_LIST;