Exemplo n.º 1
0
static s16_t
sensor_table_get_value(struct snmp_node_instance* instance, void* value)
{
  u32_t i = instance->reference.u32;
  s32_t *temperature = (s32_t *)value;

  switch (SNMP_TABLE_GET_COLUMN_FROM_OID(instance->instance_oid.id))
  {
  case 1: /* sensor value */
#if SENSORS_USE_FILES
    FILE* sensf;
    char senspath[sizeof(SENSORS_DIR)+1+SENSOR_NAME_LEN+1] = SENSORS_DIR"/";

    strncpy(&senspath[sizeof(SENSORS_DIR)],
            sensors[i].file,
            SENSOR_NAME_LEN);
    sensf = fopen(senspath,"r");
    if (sensf != NULL)
    {
      fscanf(sensf,"%"S32_F,temperature);
      fclose(sensf);
    }
#else /* SENSORS_USE_FILES */
    *temperature = sensors[i].value;
#endif /* SENSORS_USE_FILES */
    return sizeof(s32_t);
  case 2: /* file name */
    MEMCPY(value, sensors[i].file, strlen(sensors[i].file));
    return (u16_t)strlen(sensors[i].file);
  default:
    return 0;
  }
}
Exemplo n.º 2
0
static snmp_err_t
interfaces_Table_set_test(struct snmp_node_instance* instance, u16_t len, void *value)
{
  s32_t *sint_ptr = (s32_t*)value;

  /* stack should never call this method for another column,
  because all other columns are set to readonly */
  LWIP_ASSERT("Invalid column", (SNMP_TABLE_GET_COLUMN_FROM_OID(instance->instance_oid.id) == 7));
  LWIP_UNUSED_ARG(len);

  if (*sint_ptr == 1 || *sint_ptr == 2)
  {
    return SNMP_ERR_NOERROR;
  }
    
  return SNMP_ERR_WRONGVALUE;
}
Exemplo n.º 3
0
static snmp_err_t
interfaces_Table_set_value(struct snmp_node_instance* instance, u16_t len, void *value)
{
  struct netif *netif = (struct netif*)instance->reference.ptr;
  s32_t *sint_ptr = (s32_t*)value;

  /* stack should never call this method for another column,
  because all other columns are set to readonly */
  LWIP_ASSERT("Invalid column", (SNMP_TABLE_GET_COLUMN_FROM_OID(instance->instance_oid.id) == 7));
  LWIP_UNUSED_ARG(len);

  if (*sint_ptr == 1) {
    netif_set_up(netif);
  } else if (*sint_ptr == 2) {
    netif_set_down(netif);
  }

  return SNMP_ERR_NOERROR;
}
Exemplo n.º 4
0
static u16_t
interfaces_Table_get_value(struct snmp_node_instance* instance, void* value)
{
  struct netif *netif = (struct netif*)instance->reference.ptr;
  u32_t* value_u32 = (u32_t*)value;
  s32_t* value_s32 = (s32_t*)value;
  u16_t value_len;

  switch (SNMP_TABLE_GET_COLUMN_FROM_OID(instance->instance_oid.id))
  {
  case 1: /* ifIndex */
    *value_s32 = netif_to_num(netif);
    value_len = sizeof(*value_s32);
    break;
  case 2: /* ifDescr */
    value_len = sizeof(netif->name);
    MEMCPY(value, netif->name, value_len);
    break;
  case 3: /* ifType */
    *value_s32 = netif->link_type;
    value_len = sizeof(*value_s32);
    break;
  case 4: /* ifMtu */
    *value_s32 = netif->mtu;
    value_len = sizeof(*value_s32);
    break;
  case 5: /* ifSpeed */
    *value_u32 = netif->link_speed;
    value_len = sizeof(*value_u32);
    break;
  case 6: /* ifPhysAddress */
    value_len = sizeof(netif->hwaddr);
    MEMCPY(value, &netif->hwaddr, value_len);
    break;
  case 7: /* ifAdminStatus */
    if (netif_is_up(netif)) {
      *value_s32 = iftable_ifOperStatus_up;
    } else {
      *value_s32 = iftable_ifOperStatus_down;
    }
    value_len = sizeof(*value_s32);
    break;
  case 8: /* ifOperStatus */
    if (netif_is_up(netif)) {
      if (netif_is_link_up(netif)) {
        *value_s32 = iftable_ifAdminStatus_up;
      } else {
        *value_s32 = iftable_ifAdminStatus_lowerLayerDown;
      }
    } else {
      *value_s32 = iftable_ifAdminStatus_down;
    }
    value_len = sizeof(*value_s32);
    break;
  case 9: /* ifLastChange */
    *value_u32 = netif->ts;
    value_len = sizeof(*value_u32);
    break;
  case 10: /* ifInOctets */
    *value_u32 = netif->mib2_counters.ifinoctets;
    value_len = sizeof(*value_u32);
    break;
  case 11: /* ifInUcastPkts */
    *value_u32 = netif->mib2_counters.ifinucastpkts;
    value_len = sizeof(*value_u32);
    break;
  case 12: /* ifInNUcastPkts */
    *value_u32 = netif->mib2_counters.ifinnucastpkts;
    value_len = sizeof(*value_u32);
    break;
  case 13: /* ifInDiscards */
    *value_u32 = netif->mib2_counters.ifindiscards;
    value_len = sizeof(*value_u32);
    break;
  case 14: /* ifInErrors */
    *value_u32 = netif->mib2_counters.ifinerrors;
    value_len = sizeof(*value_u32);
    break;
  case 15: /* ifInUnkownProtos */
    *value_u32 = netif->mib2_counters.ifinunknownprotos;
    value_len = sizeof(*value_u32);
    break;
  case 16: /* ifOutOctets */
    *value_u32 = netif->mib2_counters.ifoutoctets;
    value_len = sizeof(*value_u32);
    break;
  case 17: /* ifOutUcastPkts */
    *value_u32 = netif->mib2_counters.ifoutucastpkts;
    value_len = sizeof(*value_u32);
    break;
  case 18: /* ifOutNUcastPkts */
    *value_u32 = netif->mib2_counters.ifoutnucastpkts;
    value_len = sizeof(*value_u32);
    break;
  case 19: /* ifOutDiscarts */
    *value_u32 = netif->mib2_counters.ifoutdiscards;
    value_len = sizeof(*value_u32);
    break;
  case 20: /* ifOutErrors */
    *value_u32 = netif->mib2_counters.ifouterrors;
    value_len = sizeof(*value_u32);
    break;
  case 21: /* ifOutQLen */
    *value_u32 = iftable_ifOutQLen;
    value_len = sizeof(*value_u32);
    break;
  /** @note returning zeroDotZero (0.0) no media specific MIB support */
  case 22: /* ifSpecific */
    value_len = snmp_zero_dot_zero.len * sizeof(u32_t);
    MEMCPY(value, snmp_zero_dot_zero.id, value_len);
    break;
  default:
    return 0;
  }

  return value_len;
}