*/
u8 state = BGP_INTERNAL_NO_VALUE;
-
+
u8 candidate;
switch (oid->n_subid)
{
/* u8 candidate; */
switch (oid->ids[2])
{
-
+
case SNMP_BGP_VERSION:
- state = BGP_INTERNAL_VERSION;
+ state = BGP_INTERNAL_VERSION;
break;
case SNMP_BGP_LOCAL_AS:
state = BGP_INTERNAL_LOCAL_AS;
}
else /* oid->ids[2] > SNMP_BGP_PEER_TABLE */
- state = BGP_INTERNAL_END;
+ state = BGP_INTERNAL_END;
}
- state = (state == BGP_INTERNAL_NO_VALUE) ?
+ state = (state == BGP_INTERNAL_NO_VALUE) ?
candidate : state;
/* fall through */
static inline int
is_dynamic(u8 state)
{
- return (state >= BGP_INTERNAL_IDENTIFIER &&
+ return (state >= BGP_INTERNAL_IDENTIFIER &&
state <= BGP_INTERNAL_IN_UPDATE_ELAPSED_TIME);
}
* SNMP_BGP_FSM_ESTABLISHED_TIME SNMP_BGP_IN_UPDATE_ELAPSED_TIME
*/
if (state == 1 || state == 4 || state == 5 ||
- state == 21 || state == 29)
+ state == 21 || state == 29)
return 0;
else
return state;
oid->ids[4] = update; \
break;
- SNMP_UPDATE_CASE(BGP_INTERNAL_STATE, SNMP_BGP_STATE)
+ SNMP_UPDATE_CASE(BGP_INTERNAL_STATE, SNMP_BGP_STATE)
SNMP_UPDATE_CASE(BGP_INTERNAL_ADMIN_STATUS, SNMP_BGP_ADMIN_STATUS)
BGP_DATA(vb, AGENTX_OCTET_STRING, pkt);
break;
+ // TODO finish me here
case BGP_INTERNAL_FSM_TRANSITIONS:
break;
case BGP_INTERNAL_FSM_ESTABLISHED_TIME:
UNUSED, uint contid UNUSED, int byte_ord UNUSED, u8 state)
{
snmp_log("snmp bgp_fill_static ()\n");
+ byte *temp = pkt;
struct oid *oid = &vb->name;
vb->type = AGENTX_NO_SUCH_OBJECT;
}
- snmp_log("snmp ended with non empty pkt\n");
+ snmp_log("snmp ended with non empty pkt %u starting from %p to %p\n", pkt -
+temp, temp, pkt);
return pkt;
}
BGP_INTERNAL_IDENTIFIER,
BGP_INTERNAL_STATE,
BGP_INTERNAL_ADMIN_STATUS,
- BGP_INTERNAL_NEGOTIATED_VERSION,
+ BGP_INTERNAL_NEGOTIATED_VERSION,
BGP_INTERNAL_LOCAL_ADDR,
- BGP_INTERNAL_LOCAL_PORT,
+ BGP_INTERNAL_LOCAL_PORT,
BGP_INTERNAL_REMOTE_ADDR,
- BGP_INTERNAL_REMOTE_PORT,
+ BGP_INTERNAL_REMOTE_PORT,
BGP_INTERNAL_REMOTE_AS,
BGP_INTERNAL_RX_UPDATES,
BGP_INTERNAL_TX_UPDATES,
BGP_INTERNAL_RX_MESSAGES,
BGP_INTERNAL_TX_MESSAGES,
- BGP_INTERNAL_LAST_ERROR,
+ BGP_INTERNAL_LAST_ERROR,
BGP_INTERNAL_FSM_TRANSITIONS,
BGP_INTERNAL_FSM_ESTABLISHED_TIME,
BGP_INTERNAL_RETRY_INTERVAL,
BGP_INTERNAL_HOLD_TIME,
BGP_INTERNAL_KEEPALIVE,
BGP_INTERNAL_HOLD_TIME_CONFIGURED,
- BGP_INTERNAL_KEEPALIVE_CONFIGURED,
+ BGP_INTERNAL_KEEPALIVE_CONFIGURED,
BGP_INTERNAL_ORIGINATION_INTERVAL,
BGP_INTERNAL_MIN_ROUTE_ADVERTISEMENT,
BGP_INTERNAL_IN_UPDATE_ELAPSED_TIME,
p->remote_ip = cf->remote_ip;
p->local_port = cf->local_port;
p->remote_port = cf->remote_port;
+ p->local_as = cf->local_as;
snmp_log("chaning proto_snmp state to INIT");
p->state = SNMP_INIT;
uint
snmp_oid_size(struct oid *o)
{
- //return 4 + o->n_subid * 4;
- return 4 + (o->n_subid << 2);
+ return 4 + (o->n_subid * 4);
}
/**
for (uint i = 0; i < oid->n_subid; i++)
*(((u32 *) buf) + i) = oid->ids[i];
#else
- put_u32s(buf, oid->ids, oid->n_subid << 2);
+ put_u32s(buf, oid->ids, oid->n_subid * 4);
#endif
- return buf + (oid->n_subid << 2);
+ return buf + oid->n_subid * 4;
}
/**
{
log(L_WARN "is eqaul to NULL");
log(L_WARN "OID DUMP END ====");
- log(L_WARN);
+ log(L_WARN ".");
return;
}
{
log(L_WARN "is empty");
log(L_WARN "OID DUMP END ====");
- log(L_WARN);
+ log(L_WARN ".");
return;
}
snmp_dump_packet(byte *pkt, uint size)
{
snmp_log("dump");
- for (int i = 0; i < size; i += 4)
+ for (uint i = 0; i < size; i += 4)
snmp_log("pkt [%d] 0x%02x%02x%02x%02x", i, pkt[i],pkt[i+1],pkt[i+2],pkt[i+3]);
snmp_log("end dump");
}