Пример #1
0
static void
snmp_error_response(struct snmp_msg_pstat *msg_ps, u8_t error)
{
    /* move names back from outvb to invb */
    int v;
    struct snmp_varbind *vbi = msg_ps->invb.head;
    struct snmp_varbind *vbo = msg_ps->outvb.head;
    for (v=0; v<msg_ps->vb_idx; v++) {
        vbi->ident_len = vbo->ident_len;
        vbo->ident_len = 0;
        vbi->ident = vbo->ident;
        vbo->ident = NULL;
        vbi = vbi->next;
        vbo = vbo->next;
    }
    /* free outvb */
    snmp_varbind_list_free(&msg_ps->outvb);
    /* we send invb back */
    msg_ps->outvb = msg_ps->invb;
    msg_ps->invb.head = NULL;
    msg_ps->invb.tail = NULL;
    msg_ps->invb.count = 0;
    msg_ps->error_status = error;
    /* error index must be 0 for error too big */
    msg_ps->error_index = (error != SNMP_ES_TOOBIG) ? (1 + msg_ps->vb_idx) : 0;
    snmp_send_response(msg_ps);
    snmp_varbind_list_free(&msg_ps->outvb);
    msg_ps->state = SNMP_MSG_EMPTY;
}
Пример #2
0
static void
snmp_error_response(struct snmp_msg_pstat *msg_ps, u8_t error)
{
  snmp_varbind_list_free(&msg_ps->outvb);
  msg_ps->outvb = msg_ps->invb;
  msg_ps->invb.head = NULL;
  msg_ps->invb.tail = NULL;
  msg_ps->invb.count = 0;
  msg_ps->error_status = error;
  msg_ps->error_index = 1 + msg_ps->vb_idx;
  snmp_send_response(msg_ps);
  snmp_varbind_list_free(&msg_ps->outvb);
  msg_ps->state = SNMP_MSG_EMPTY;
}
Пример #3
0
static void
snmp_ok_response(struct snmp_msg_pstat *msg_ps)
{
    err_t err_ret;

    err_ret = snmp_send_response(msg_ps);
    if (err_ret == ERR_MEM) {
        /* serious memory problem, can't return tooBig */
    } else {
        LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_event = %"S32_F"\n",msg_ps->error_status));
    }
    /* free varbinds (if available) */
    snmp_varbind_list_free(&msg_ps->invb);
    snmp_varbind_list_free(&msg_ps->outvb);
    msg_ps->state = SNMP_MSG_EMPTY;
}