| /* |
| * System-specific type and field-name information. |
| * Used by 'interface' and 'ipAddr' groups. |
| */ |
| |
| #ifndef _MIBGROUP_IF_FIELDS_H |
| #define _MIBGROUP_IF_FIELDS_H |
| |
| #ifdef freebsd4 /* XXX Use the same ifdefs as in interfaces.c */ |
| #define USE_SYSCTL_IFLIST 1 |
| #endif |
| |
| /* |
| * Definitions for 'USE_SYSCTL_IFLIST' |
| */ |
| |
| #ifdef USE_SYSCTL_IFLIST |
| struct small_ifaddr |
| { |
| struct in_addr sifa_addr; |
| struct in_addr sifa_netmask; |
| struct in_addr sifa_broadcast; |
| }; |
| #define IFENTRY_TYPE struct if_msghdr |
| #define IFADDR_TYPE struct small_ifaddr |
| |
| #define IFENTRY_FIELD_TYPE ifm_data.ifi_type |
| #define IFENTRY_FIELD_MTU ifm_data.ifi_mtu |
| #define IFENTRY_FIELD_SPEED ifm_data.ifi_baudrate |
| #undef IFENTRY_FIELD_PHYSADDR |
| #undef IFENTRY_FIELD_ADMIN |
| #undef IFENTRY_FIELD_OPER |
| #undef IFENTRY_FIELD_LASTCH |
| #define IFENTRY_FIELD_INOCTETS ifm_data.ifi_ibytes |
| #define IFENTRY_FIELD_INPKTS ifm_data.ifi_ipackets |
| #define IFENTRY_FIELD_INMCASTS ifm_data.ifi_imcasts |
| #define IFENTRY_FIELD_INDISCARDS ifm_data.ifi_iqdrops |
| #define IFENTRY_FIELD_INERRORS ifm_data.ifi_ierrors |
| #define IFENTRY_FIELD_UNKNOWN ifm_data.ifi_noproto |
| #define IFENTRY_FIELD_OUTOCTETS ifm_data.ifi_obytes |
| #define IFENTRY_FIELD_OUTPKTS ifm_data.ifi_opackets |
| #define IFENTRY_FIELD_OUTMCASTS ifm_data.ifi_omcasts |
| #ifndef freebsd4 |
| #define IFENTRY_FIELD_OUTDISCARDS ifm_data.ifi_oqdrops |
| #endif |
| #define IFENTRY_FIELD_OUTERRORS ifm_data.ifi_oerrors |
| #undef IFENTRY_FIELD_QLEN |
| #undef IFENTRY_FIELD_OID |
| |
| #define IPADDR_ADDRESS_FIELD sifa_addr |
| #define IPADDR_BCAST_FIELD sifa_broadcast |
| #define IPADDR_NETMASK_FIELD sifa_netmask |
| |
| #undef IFENTRY_CALCULATE_PHYSADDR |
| #define IFENTRY_CALCULATE_STATUS 1 |
| #define IFENTRY_FIELD_FLAGS ifm_flags |
| #undef IFENTRY_CALCULATE_LASTCH |
| #define IFENTRY_FIX_UNICAST 1 |
| #endif |
| |
| |
| |
| /* |
| * Definitions for 'HAVE_NET_IF_MIB_H' |
| */ |
| |
| #if !defined(USE_SYSCTL_IFLIST) && defined(HAVE_NET_IF_MIB_H) |
| #define IFENTRY_TYPE struct if_mibdata |
| #define IFADDR_TYPE struct in_ifaddr |
| |
| #define IFENTRY_FIELD_TYPE ifm_data.ifi_type |
| #define IFENTRY_FIELD_MTU ifm_data.ifi_mtu |
| #define IFENTRY_FIELD_SPEED ifm_data.ifi_baudrate |
| #undef IFENTRY_FIELD_PHYSADDR |
| #undef IFENTRY_FIELD_ADMIN |
| #undef IFENTRY_FIELD_OPER |
| #define IFENTRY_FIELD_LASTCH ifm_data.ifi_lastchange |
| #define IFENTRY_FIELD_INOCTETS ifm_data.ifi_ibytes |
| #define IFENTRY_FIELD_INPKTS ifm_data.ifi_ipackets |
| #define IFENTRY_FIELD_INMCASTS ifm_data.ifi_imcasts |
| #define IFENTRY_FIELD_INDISCARDS ifm_data.ifi_iqdrops |
| #define IFENTRY_FIELD_INERRORS ifm_data.ifi_ierrors |
| #define IFENTRY_FIELD_UNKNOWN ifm_data.ifi_noproto |
| #define IFENTRY_FIELD_OUTOCTETS ifm_data.ifi_obytes |
| #define IFENTRY_FIELD_OUTPKTS ifm_data.ifi_opackets |
| #define IFENTRY_FIELD_OUTMCASTS ifm_data.ifi_omcasts |
| #define IFENTRY_FIELD_OUTDISCARDS ifm_snd_drops |
| #define IFENTRY_FIELD_OUTERRORS ifm_data.ifi_oerrors |
| #define IFENTRY_FIELD_QLEN ifm_snd_len |
| #undef IFENTRY_FIELD_OID |
| |
| #define IPADDR_ADDRESS_FIELD ia_addr |
| #define IPADDR_BCAST_FIELD ia_broadaddr |
| #define IPADDR_NETMASK_FIELD ia_subnetmask |
| |
| #define IFENTRY_CALCULATE_PHYSADDR 1 |
| #define IFENTRY_CALCULATE_STATUS 1 |
| #define IFENTRY_FIELD_FLAGS ifm_flags |
| #define IFENTRY_CALCULATE_LASTCH 1 |
| #define IFENTRY_FIX_UNICAST 1 |
| #endif |
| |
| |
| |
| /* |
| * Definitions for 'solaris2' |
| */ |
| |
| #ifdef solaris2 |
| #define IFENTRY_TYPE mib2_ifEntry_t |
| #define IFADDR_TYPE mib2_ipAddrEntry_t |
| |
| #define IFENTRY_FIELD_TYPE ifType |
| #define IFENTRY_FIELD_MTU ifMtu |
| #define IFENTRY_FIELD_SPEED ifSpeed |
| #define IFENTRY_FIELD_PHYSADDR ifPhysAddress |
| #define IFENTRY_FIELD_ADMIN ifAdminStatus |
| #define IFENTRY_FIELD_OPER ifOperStatus |
| #define IFENTRY_FIELD_LASTCH ifLastChange |
| #define IFENTRY_FIELD_INOCTETS ifInOctets |
| #define IFENTRY_FIELD_INPKTS ifInUcastPkts |
| #define IFENTRY_FIELD_INMCASTS ifInNUcastPkts |
| #define IFENTRY_FIELD_INDISCARDS ifInDiscards |
| #define IFENTRY_FIELD_INERRORS ifInErrors |
| #define IFENTRY_FIELD_UNKNOWN ifInUnknownProtos |
| #define IFENTRY_FIELD_OUTOCTETS ifOutOctets |
| #define IFENTRY_FIELD_OUTPKTS ifOutUcastPkts |
| #define IFENTRY_FIELD_OUTMCASTS ifOutNUcastPkts |
| #define IFENTRY_FIELD_OUTDISCARDS ifOutDiscards |
| #define IFENTRY_FIELD_OUTERRORS ifOutErrors |
| #define IFENTRY_FIELD_QLEN ifOutQLen |
| #undef IFENTRY_FIELD_OID |
| |
| #define IPADDR_ADDRESS_FIELD ia_addr |
| #define IPADDR_BCAST_FIELD ia_broadaddr |
| #define IPADDR_NETMASK_FIELD ia_subnetmask |
| |
| #undef IFENTRY_CALCULATE_PHYSADDR |
| #define IFENTRY_STRING_SIZE(x) (x.olength) |
| #define IFENTRY_STRING_VALUE(x) (x.obytes) |
| #undef IFENTRY_CALCULATE_STATUS |
| #undef IFENTRY_CALCULATE_LASTCH |
| #undef IFENTRY_FIX_UNICAST |
| #endif |
| |
| |
| /* |
| * Definitions for 'hpux' |
| */ |
| |
| #ifdef hpux |
| #define IFENTRY_TYPE mib_ifEntry |
| #define IFADDR_TYPE mib_ipAdEnt |
| |
| #define IFENTRY_FIELD_TYPE ifType |
| #define IFENTRY_FIELD_MTU ifMtu |
| #define IFENTRY_FIELD_SPEED ifSpeed |
| #define IFENTRY_FIELD_PHYSADDR ifPhysAddress |
| #define IFENTRY_FIELD_ADMIN ifAdmin |
| #define IFENTRY_FIELD_OPER ifOper |
| #define IFENTRY_FIELD_LASTCH ifLastChange |
| #define IFENTRY_FIELD_INOCTETS ifInOctets |
| #define IFENTRY_FIELD_INPKTS ifInUcastPkts |
| #define IFENTRY_FIELD_INMCASTS ifInNUcastPkts |
| #define IFENTRY_FIELD_INDISCARDS ifInDiscards |
| #define IFENTRY_FIELD_INERRORS ifInErrors |
| #define IFENTRY_FIELD_UNKNOWN ifInUnknownProtos |
| #define IFENTRY_FIELD_OUTOCTETS ifOutOctets |
| #define IFENTRY_FIELD_OUTPKTS ifOutUcastPkts |
| #define IFENTRY_FIELD_OUTMCASTS ifOutNUcastPkts |
| #define IFENTRY_FIELD_OUTDISCARDS ifOutDiscards |
| #define IFENTRY_FIELD_OUTERRORS ifOutErrors |
| #define IFENTRY_FIELD_QLEN ifOutQlen |
| #undef IFENTRY_FIELD_OID |
| |
| #undef IFENTRY_CALCULATE_PHYSADDR |
| /* |
| * XXX - this is currently only used for the determining the size |
| * of the PhysAddr field, which ought to be six bytes, but is |
| * actually eight (with two characters unused) |
| * |
| * If we start using this macro more widely, we'll need to |
| * fudge this more cleanly. |
| */ |
| #define IFENTRY_STRING_SIZE(x) (6) |
| #define IFENTRY_STRING_VALUE(x) (x) |
| #undef IFENTRY_CALCULATE_STATUS |
| #undef IFENTRY_CALCULATE_LASTCH |
| #undef IFENTRY_FIX_UNICAST |
| |
| #define IPADDR_ADDRESS_FIELD Addr |
| #define IPADDR_BCAST_FIELD NetMask |
| #define IPADDR_NETMASK_FIELD BcastAddr |
| |
| #undef SOCKADDR |
| #define SOCKADDR(x) (x) |
| #endif |
| |
| |
| /* |
| * Definitions for 'linux' |
| */ |
| |
| #ifdef linux |
| /* |
| * this struct ifnet is cloned from the generic type and somewhat modified. |
| * it will not work for other un*x'es... |
| */ |
| |
| struct ifnet { |
| char *if_name; /* name, e.g. ``en'' or ``lo'' */ |
| char *if_unit; /* sub-unit for lower level driver */ |
| short if_mtu; /* maximum transmission unit */ |
| short if_flags; /* up/down, broadcast, etc. */ |
| int if_metric; /* routing metric (external only) */ |
| char if_hwaddr [6]; /* ethernet address */ |
| int if_type; /* interface type: 1=generic, |
| 28=slip, ether=6, loopback=24 */ |
| int if_speed; /* interface speed: in bits/sec */ |
| |
| struct ifqueue { |
| int ifq_len; |
| int ifq_drops; |
| } if_snd; /* output queue */ |
| u_long if_ibytes; /* octets received on interface */ |
| u_long if_ipackets; /* packets received on interface */ |
| u_long if_ierrors; /* input errors on interface */ |
| u_long if_obytes; /* octets sent on interface */ |
| u_long if_opackets; /* packets sent on interface */ |
| u_long if_oerrors; /* output errors on interface */ |
| u_long if_collisions; /* collisions on csma interfaces */ |
| /* end statistics */ |
| struct ifnet *if_next; |
| }; |
| |
| struct in_ifaddr { |
| |
| struct sockaddr ia_addr; /* interface's address */ |
| struct sockaddr ia_broadaddr; /* broadcast address */ |
| struct sockaddr ia_subnetmask; /* interface's mask */ |
| |
| }; |
| |
| #define IFENTRY_TYPE struct ifnet |
| #define IFADDR_TYPE struct in_ifaddr |
| |
| #define IFENTRY_FIELD_TYPE if_type |
| #ifdef SIOCGIFMTU |
| #define IFENTRY_FIELD_MTU if_mtu |
| #endif |
| #define IFENTRY_FIELD_SPEED if_speed |
| #define IFENTRY_FIELD_PHYSADDR if_hwaddr |
| #undef IFENTRY_FIELD_ADMIN |
| #undef IFENTRY_FIELD_OPER |
| #undef IFENTRY_FIELD_LASTCH |
| #define IFENTRY_FIELD_INOCTETS if_ibytes |
| #define IFENTRY_FIELD_INPKTS if_ipackets |
| #undef IFENTRY_FIELD_INMCASTS |
| #undef IFENTRY_FIELD_INDISCARDS |
| #define IFENTRY_FIELD_INERRORS if_ierrors |
| #undef IFENTRY_FIELD_UNKNOWN |
| #define IFENTRY_FIELD_OUTOCTETS if_obytes |
| #define IFENTRY_FIELD_OUTPKTS if_opackets |
| #undef IFENTRY_FIELD_OUTMCASTS |
| #define IFENTRY_FIELD_OUTDISCARDS if_snd.ifq_drops |
| #define IFENTRY_FIELD_OUTERRORS if_oerrors |
| #define IFENTRY_FIELD_QLEN if_snd.ifq_len |
| #undef IFENTRY_FIELD_OID |
| |
| #define IPADDR_ADDRESS_FIELD ia_addr |
| #define IPADDR_BCAST_FIELD ia_broadaddr |
| #define IPADDR_NETMASK_FIELD ia_subnetmask |
| |
| #undef IFENTRY_CALCULATE_PHYSADDR |
| #define IFENTRY_STRING_SIZE(x) (sizeof(x)) |
| #define IFENTRY_STRING_VALUE(x) (x) |
| #define IFENTRY_CALCULATE_STATUS 1 |
| #define IFENTRY_FIELD_FLAGS if_flags |
| #undef IFENTRY_CALCULATE_LASTCH |
| #undef IFENTRY_FIX_UNICAST |
| #endif |
| |
| |
| |
| /* |
| * Definitions for other 'traditional' systems |
| */ |
| |
| #ifndef IFENTRY_TYPE |
| #define IFENTRY_TYPE struct ifnet |
| #define IFADDR_TYPE struct in_ifaddr |
| |
| #ifdef STRUCT_IFNET_HAS_IF_TYPE |
| #define IFENTRY_FIELD_TYPE if_type |
| #endif |
| #define IFENTRY_FIELD_MTU if_mtu |
| #undef IFENTRY_FIELD_SPEED |
| #ifdef STRUCT_IFNET_HAS_IF_BAUDRATE |
| #define IFENTRY_FIELD_SPEED if_baudrate |
| #else |
| #ifdef STRUCT_IFNET_HAS_IF_SPEED |
| #define IFENTRY_FIELD_SPEED if_speed |
| #endif |
| #endif |
| |
| #undef IFENTRY_FIELD_PHYSADDR |
| #undef IFENTRY_FIELD_ADMIN |
| #undef IFENTRY_FIELD_OPER |
| #if defined(STRUCT_IFNET_HAS_IF_LASTCHANGE_TV_SEC) && !(defined(freebsd2) && __FreeBSD_version < 199607) |
| #define IFENTRY_FIELD_LASTCH if_lastchange |
| #endif |
| |
| #ifdef STRUCT_IFNET_HAS_IF_IBYTES |
| #define IFENTRY_FIELD_INOCTETS if_ibytes |
| #endif |
| #define IFENTRY_FIELD_INPKTS if_ipackets |
| #ifdef STRUCT_IFNET_HAS_IF_IMCASTS |
| #define IFENTRY_FIELD_INMCASTS if_imcasts |
| #endif |
| #ifdef STRUCT_IFNET_HAS_IF_IQDROPS |
| #define IFENTRY_FIELD_INDISCARDS if_iqdrops |
| #endif |
| #define IFENTRY_FIELD_INERRORS if_ierrors |
| #ifdef STRUCT_IFNET_HAS_IF_NOPROTO |
| #define IFENTRY_FIELD_UNKNOWN if_noproto |
| #endif |
| |
| #ifdef STRUCT_IFNET_HAS_IF_OBYTES |
| #define IFENTRY_FIELD_OUTOCTETS if_obytes |
| #endif |
| #define IFENTRY_FIELD_OUTPKTS if_opackets |
| #ifdef STRUCT_IFNET_HAS_IF_OMCASTS |
| #define IFENTRY_FIELD_OUTMCASTS if_omcasts |
| #endif |
| #define IFENTRY_FIELD_OUTDISCARDS if_snd.ifq_drops |
| #define IFENTRY_FIELD_OUTERRORS if_oerrors |
| #define IFENTRY_FIELD_QLEN if_snd.ifq_len |
| #undef IFENTRY_FIELD_OID |
| |
| #define IPADDR_ADDRESS_FIELD ia_addr |
| #define IPADDR_BCAST_FIELD ia_broadaddr |
| #define IPADDR_NETMASK_FIELD ia_subnetmask |
| |
| #define IFENTRY_CALCULATE_PHYSADDR 1 |
| #define IFENTRY_CALCULATE_STATUS 1 |
| #define IFENTRY_FIELD_FLAGS if_flags |
| #ifdef IFENTRY_FIELD_LASTCH |
| #define IFENTRY_CALCULATE_LASTCH 1 |
| #endif |
| #ifdef IFENTRY_FIELD_INMCASTS |
| #define IFENTRY_FIX_UNICAST 1 |
| #endif |
| |
| #endif |
| |
| |
| |
| struct if_entry { |
| int index; |
| char *name; |
| IFENTRY_TYPE *ifstat; |
| IFADDR_TYPE *ifaddr; |
| }; |
| |
| #endif /* _MIBGROUP_IF_FIELDS_H */ |