mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-31 14:11:54 +00:00
snmp_log() wrapper
This commit is contained in:
parent
74c68fc89e
commit
8d4926b0f5
@ -114,52 +114,51 @@ print_bgp_record(struct bgp_config *config)
|
||||
struct bgp_proto *bgp_proto = (struct bgp_proto *) cf->proto;
|
||||
struct bgp_conn *conn = bgp_proto->conn;
|
||||
|
||||
log(L_INFO " name: %s", cf->name);
|
||||
log(L_INFO "");
|
||||
log(L_INFO " rem. identifier: %u", bgp_proto->remote_id);
|
||||
log(L_INFO " local ip: %I", config->local_ip);
|
||||
log(L_INFO " remote ip: %I", config->remote_ip);
|
||||
log(L_INFO " local port: %u", config->local_port);
|
||||
log(L_INFO " remote port: %u", config->remote_port);
|
||||
snmp_log(" name: %s", cf->name);
|
||||
snmp_log("");
|
||||
snmp_log(" rem. identifier: %u", bgp_proto->remote_id);
|
||||
snmp_log(" local ip: %I", config->local_ip);
|
||||
snmp_log(" remote ip: %I", config->remote_ip);
|
||||
snmp_log(" local port: %u", config->local_port);
|
||||
snmp_log(" remote port: %u", config->remote_port);
|
||||
|
||||
// crashes ?
|
||||
if (conn) {
|
||||
log(L_INFO " state: %u", conn->state);
|
||||
log(L_INFO " remote as: %u", conn->remote_caps->as4_number);
|
||||
snmp_log(" state: %u", conn->state);
|
||||
snmp_log(" remote as: %u", conn->remote_caps->as4_number);
|
||||
}
|
||||
|
||||
|
||||
log(L_INFO " in updates: %u", bgp_proto->stats.rx_updates);
|
||||
log(L_INFO " out updates: %u", bgp_proto->stats.tx_updates);
|
||||
log(L_INFO " in total: %u", bgp_proto->stats.rx_messages);
|
||||
log(L_INFO " out total: %u", bgp_proto->stats.tx_messages);
|
||||
log(L_INFO " fsm transitions: %u",
|
||||
snmp_log(" in updates: %u", bgp_proto->stats.rx_updates);
|
||||
snmp_log(" out updates: %u", bgp_proto->stats.tx_updates);
|
||||
snmp_log(" in total: %u", bgp_proto->stats.rx_messages);
|
||||
snmp_log(" out total: %u", bgp_proto->stats.tx_messages);
|
||||
snmp_log(" fsm transitions: %u",
|
||||
bgp_proto->stats.fsm_established_transitions);
|
||||
|
||||
// not supported yet
|
||||
log(L_INFO " fsm total time: --");
|
||||
log(L_INFO " retry interval: %u", config->connect_retry_time);
|
||||
snmp_log(" fsm total time: --");
|
||||
snmp_log(" retry interval: %u", config->connect_retry_time);
|
||||
|
||||
log(L_INFO " hold configurated: %u", config->hold_time );
|
||||
log(L_INFO " keep alive config: %u", config->keepalive_time );
|
||||
snmp_log(" hold configurated: %u", config->hold_time );
|
||||
snmp_log(" keep alive config: %u", config->keepalive_time );
|
||||
|
||||
// unknown
|
||||
log(L_INFO " min AS origin. int.: --");
|
||||
log(L_INFO " min route advertisement: %u", 0 );
|
||||
log(L_INFO " in update elapsed time: %u", 0 );
|
||||
snmp_log(" min AS origin. int.: --");
|
||||
snmp_log(" min route advertisement: %u", 0 );
|
||||
snmp_log(" in update elapsed time: %u", 0 );
|
||||
|
||||
if (!conn)
|
||||
log(L_INFO " no connection established");
|
||||
|
||||
log(L_INFO " outgoinin_conn state %u", bgp_proto->outgoing_conn.state + 1);
|
||||
log(L_INFO " incoming_conn state: %u", bgp_proto->incoming_conn.state + 1);
|
||||
snmp_log(" no connection established");
|
||||
|
||||
snmp_log(" outgoinin_conn state %u", bgp_proto->outgoing_conn.state + 1);
|
||||
snmp_log(" incoming_conn state: %u", bgp_proto->incoming_conn.state + 1);
|
||||
}
|
||||
|
||||
static void
|
||||
print_bgp_record_all(struct snmp_proto *p)
|
||||
{
|
||||
log(L_INFO "dumping watched bgp status");
|
||||
snmp_log("dumping watched bgp status");
|
||||
HASH_WALK(p->bgp_hash, next, peer)
|
||||
{
|
||||
print_bgp_record(peer->config);
|
||||
@ -468,15 +467,15 @@ update_bgp_oid(struct oid *oid, u8 state)
|
||||
static struct oid *
|
||||
bgp_find_dynamic_oid(struct snmp_proto *p, struct oid *o_start, struct oid *o_end, u8 state UNUSED)
|
||||
{
|
||||
log(L_INFO "bgp_find_dynamic_oid()");
|
||||
snmp_log("bgp_find_dynamic_oid()");
|
||||
ip4_addr ip4 = ip4_from_oid(o_start);
|
||||
ip4_addr dest = ip4_from_oid(o_end);
|
||||
|
||||
log(L_INFO "ip addresses build");
|
||||
snmp_log("ip addresses build");
|
||||
net_addr *net = mb_allocz(p->p.pool, sizeof(struct net_addr));
|
||||
net_fill_ip4(net, ip4, IP4_MAX_PREFIX_LENGTH);
|
||||
|
||||
log(L_INFO "dynamic part of BGP mib");
|
||||
snmp_log("dynamic part of BGP mib");
|
||||
|
||||
struct f_trie_walk_state *ws = mb_allocz(p->p.pool,
|
||||
sizeof(struct f_trie_walk_state));
|
||||
@ -566,7 +565,7 @@ static byte *
|
||||
bgp_fill_dynamic(struct snmp_proto *p, struct agentx_varbind *vb, byte *pkt, uint size
|
||||
UNUSED, uint contid UNUSED, int byte_ord UNUSED, u8 state)
|
||||
{
|
||||
//log(L_INFO "bgp_fill_dynamic() valid ip %s", snmp_bgp_valid_ip4(oid) ? "true" : "false");
|
||||
//snmp_log("bgp_fill_dynamic() valid ip %s", snmp_bgp_valid_ip4(oid) ? "true" : "false");
|
||||
|
||||
struct oid *oid = &vb->name;
|
||||
|
||||
@ -579,7 +578,7 @@ UNUSED, uint contid UNUSED, int byte_ord UNUSED, u8 state)
|
||||
return pkt;
|
||||
}
|
||||
|
||||
log(L_INFO " -> ip addr %I", addr);
|
||||
snmp_log(" -> ip addr %I", addr);
|
||||
// TODO XXX deal with possible change of (remote) ip
|
||||
struct snmp_bgp_peer *pe = HASH_FIND(p->bgp_hash, SNMP_HASH, addr);
|
||||
|
||||
@ -777,7 +776,7 @@ static byte *
|
||||
bgp_fill_static(struct snmp_proto *p, struct agentx_varbind *vb, byte *pkt, uint size
|
||||
UNUSED, uint contid UNUSED, int byte_ord UNUSED, u8 state)
|
||||
{
|
||||
log(L_INFO "snmp bgp_fill_static ()\n");
|
||||
snmp_log("snmp bgp_fill_static ()\n");
|
||||
|
||||
struct oid *oid = &vb->name;
|
||||
|
||||
@ -812,7 +811,7 @@ UNUSED, uint contid UNUSED, int byte_ord UNUSED, u8 state)
|
||||
vb->type = AGENTX_NO_SUCH_OBJECT;
|
||||
}
|
||||
|
||||
log(L_INFO "snmp ended with non empty pkt\n");
|
||||
snmp_log("snmp ended with non empty pkt\n");
|
||||
return pkt;
|
||||
}
|
||||
|
||||
@ -821,7 +820,7 @@ snmp_bgp_fill(struct snmp_proto *p, struct agentx_varbind *vb, byte *buf UNUSED,
|
||||
uint size UNUSED, uint contid UNUSED, int byte_ord UNUSED)
|
||||
{
|
||||
u8 state = snmp_bgp_state(&vb->name);
|
||||
//log(L_INFO "snmp_bgp_fill() state %u is dynamic %s has value %s", state, is_dynamic(state) ? "true" : "false", snmp_bgp_has_value(state) ? "true" : "false");
|
||||
//snmp_log("snmp_bgp_fill() state %u is dynamic %s has value %s", state, is_dynamic(state) ? "true" : "false", snmp_bgp_has_value(state) ? "true" : "false");
|
||||
|
||||
if (!is_dynamic(state))
|
||||
return bgp_fill_static(p, vb, buf, size, contid, byte_ord, state);
|
||||
@ -835,7 +834,7 @@ uint size UNUSED, uint contid UNUSED, int byte_ord UNUSED)
|
||||
}
|
||||
/*
|
||||
{
|
||||
log(L_INFO "has no value");
|
||||
snmp_log("has no value");
|
||||
struct agentx_varbind *vb = snmp_create_varbind(buf, oid);
|
||||
buf += snmp_varbind_size(vb);
|
||||
vb->type = AGENTX_NO_SUCH_OBJECT;
|
||||
|
@ -45,12 +45,13 @@ snmp_init(struct proto_config *CF)
|
||||
p->remote_ip = cf->remote_ip;
|
||||
p->local_port = cf->local_port;
|
||||
p->remote_port = cf->remote_port;
|
||||
snmp_log("chaning proto_snmp state to INIT");
|
||||
p->state = SNMP_INIT;
|
||||
|
||||
// p->timeout = cf->timeout;
|
||||
p->timeout = 15;
|
||||
|
||||
log(L_INFO "snmp_reconfigure() lip: %I:%u rip: %I:%u",
|
||||
snmp_log("snmp_reconfigure() lip: %I:%u rip: %I:%u",
|
||||
cf->local_ip, cf->local_port, cf->remote_ip, cf->remote_port);
|
||||
|
||||
return P;
|
||||
@ -59,7 +60,7 @@ snmp_init(struct proto_config *CF)
|
||||
static void
|
||||
snmp_startup_timeout(timer *t)
|
||||
{
|
||||
log(L_INFO "startup timer triggered");
|
||||
snmp_log("startup timer triggered");
|
||||
snmp_startup(t->data);
|
||||
}
|
||||
|
||||
@ -70,9 +71,9 @@ snmp_startup(struct snmp_proto *p)
|
||||
|
||||
/* starting agentX communicaiton channel */
|
||||
|
||||
log(L_INFO "preparing lock");
|
||||
snmp_log("preparing lock");
|
||||
struct object_lock *lock;
|
||||
log(L_INFO "snmp_startup() object lock state %p", p->lock);
|
||||
snmp_log("snmp_startup() object lock state %p", p->lock);
|
||||
|
||||
/* we could have the lock already acquired but be in ERROR state */
|
||||
lock = p->lock = olock_new(p->p.pool);
|
||||
@ -81,17 +82,19 @@ snmp_startup(struct snmp_proto *p)
|
||||
lock->hook = snmp_start_locked;
|
||||
lock->data = p;
|
||||
|
||||
snmp_log("lock acquiring");
|
||||
olock_acquire(lock);
|
||||
log(L_INFO "lock acquiring");
|
||||
|
||||
log(L_INFO "local ip: %I:%u, remote ip: %I:%u",
|
||||
/*
|
||||
snmp_log("local ip: %I:%u, remote ip: %I:%u",
|
||||
p->local_ip, p->local_port, p->remote_ip, p->remote_port);
|
||||
*/
|
||||
}
|
||||
|
||||
static void
|
||||
snmp_start_locked(struct object_lock *lock)
|
||||
{
|
||||
log(L_INFO "snmp_start_locked() - preparing socket ");
|
||||
snmp_log("snmp_start_locked() - lock acquired; preparing socket ");
|
||||
struct snmp_proto *p = lock->data;
|
||||
|
||||
sock *s = sk_new(p->p.pool);
|
||||
@ -118,21 +121,20 @@ snmp_start_locked(struct object_lock *lock)
|
||||
if (sk_open(s) < 0)
|
||||
log(L_ERR "Cannot open listening socket");
|
||||
|
||||
log(L_INFO "socket ready!, trying to connect");
|
||||
snmp_log("socket ready!, trying to connect");
|
||||
}
|
||||
|
||||
static void
|
||||
snmp_tx(sock *sk UNUSED)
|
||||
{
|
||||
log(L_INFO "snmp_tx() something, yay!");
|
||||
snmp_log("snmp_tx() something, yay!");
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
snmp_connected(sock *sk)
|
||||
{
|
||||
struct snmp_proto *p = sk->data;
|
||||
log(L_INFO "snmp_connected() connection created");
|
||||
snmp_log("snmp_connected() connection created");
|
||||
byte *buf UNUSED = sk->rbuf;
|
||||
|
||||
sk->rx_hook = snmp_rx;
|
||||
@ -144,7 +146,7 @@ snmp_connected(sock *sk)
|
||||
static void
|
||||
snmp_sock_err(sock *sk, int err)
|
||||
{
|
||||
log(L_INFO "snmp_sock_err() %s - err no: %d", strerror(err), err);
|
||||
snmp_log("snmp_sock_err() %s - err no: %d", strerror(err), err);
|
||||
|
||||
struct snmp_proto *p = sk->data;
|
||||
tm_stop(p->ping_timer);
|
||||
@ -155,6 +157,7 @@ snmp_sock_err(sock *sk, int err)
|
||||
rfree(p->lock);
|
||||
p->lock = NULL;
|
||||
|
||||
snmp_log("changing proto_snmp state to ERR[OR]");
|
||||
p->state = SNMP_ERR;
|
||||
tm_start(p->startup_timer, 15 S);
|
||||
}
|
||||
@ -162,7 +165,7 @@ snmp_sock_err(sock *sk, int err)
|
||||
static int
|
||||
snmp_start(struct proto *P)
|
||||
{
|
||||
log(L_INFO "snmp_start() - starting timer (almost)");
|
||||
snmp_log("snmp_start() - starting timer (almost)");
|
||||
struct snmp_proto *p = (void *) P;
|
||||
struct snmp_config *cf = (struct snmp_config *) P->cf;
|
||||
|
||||
@ -179,7 +182,7 @@ snmp_start(struct proto *P)
|
||||
|
||||
|
||||
/* starting agentX communicaiton channel */
|
||||
log(L_INFO "preparing lock");
|
||||
snmp_log("preparing lock");
|
||||
struct object_lock *lock;
|
||||
lock = p->lock = olock_new(p->p.pool);
|
||||
|
||||
@ -188,9 +191,9 @@ snmp_start(struct proto *P)
|
||||
lock->data = p;
|
||||
|
||||
olock_acquire(lock);
|
||||
log(L_INFO "lock acquired");
|
||||
snmp_log("lock acquired");
|
||||
|
||||
log(L_INFO "local ip: %I:%u, remote ip: %I:%u",
|
||||
snmp_log("local ip: %I:%u, remote ip: %I:%u",
|
||||
p->local_ip, p->local_port, p->remote_ip, p->remote_port);
|
||||
|
||||
/* create copy of bonds to bgp */
|
||||
@ -234,8 +237,9 @@ snmp_reconfigure(struct proto *P, struct proto_config *CF)
|
||||
|
||||
/* TODO walk all bind protocols and find their (new) IP
|
||||
to update HASH table */
|
||||
log(L_INFO "snmp_reconfigure() lip: %I:%u rip: %I:%u",
|
||||
snmp_log("snmp_reconfigure() lip: %I:%u rip: %I:%u",
|
||||
p->local_ip, p->local_port, p->remote_ip, p->remote_port);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -319,7 +323,7 @@ snmp_postconfig(struct proto_config *CF)
|
||||
static void
|
||||
snmp_ping_timer(struct timer *tm)
|
||||
{
|
||||
log(L_INFO "snmp_ping_timer() ");
|
||||
snmp_log("snmp_ping_timer() ");
|
||||
struct snmp_proto *p = tm->data;
|
||||
|
||||
if (p->state == SNMP_CONN)
|
||||
|
@ -91,7 +91,8 @@ struct snmp_proto {
|
||||
u32 packet_id;
|
||||
|
||||
//struct iface *iface;
|
||||
// map goes here
|
||||
|
||||
// map
|
||||
struct f_trie *bgp_trie;
|
||||
HASH(struct snmp_bgp_peer) bgp_hash;
|
||||
struct tbf rl_gen;
|
||||
@ -106,6 +107,4 @@ struct snmp_proto {
|
||||
uint errs;
|
||||
};
|
||||
|
||||
#define snmp_log(x) log(L_INFO "snmp" x);
|
||||
|
||||
#endif
|
||||
|
@ -70,7 +70,7 @@ open_pdu(struct snmp_proto *p, struct oid *oid)
|
||||
|
||||
if (size > AGENTX_HEADER_SIZE + snmp_oid_size(oid) + snmp_str_size(str))
|
||||
{
|
||||
log(L_INFO "open_pdu()");
|
||||
snmp_log("open_pdu()");
|
||||
|
||||
struct agentx_header *h;
|
||||
SNMP_CREATE(pkt, struct agentx_header, h)
|
||||
@ -89,15 +89,15 @@ open_pdu(struct snmp_proto *p, struct oid *oid)
|
||||
int ret = sk_send(sk, pkt - buf);
|
||||
|
||||
if (ret == 0)
|
||||
log(L_INFO "sk_send sleep");
|
||||
snmp_log("sk_send sleep");
|
||||
else if (ret < 0)
|
||||
log(L_INFO "sk_send err %d", ret);
|
||||
snmp_log("sk_send err %d", ret);
|
||||
else
|
||||
log(L_INFO "sk_send ok !!! ");
|
||||
snmp_log("sk_send ok !!! ");
|
||||
}
|
||||
|
||||
else
|
||||
log(L_INFO "open_pdu() insufficient size, %u <= %u ",
|
||||
snmp_log("open_pdu() insufficient size, %u <= %u ",
|
||||
size, AGENTX_HEADER_SIZE + snmp_oid_size(oid) + snmp_str_size(str));
|
||||
}
|
||||
|
||||
@ -112,7 +112,7 @@ de_allocate_pdu(struct snmp_proto *p, struct oid *oid, u8 type)
|
||||
|
||||
if (size > AGENTX_HEADER_SIZE + )
|
||||
{
|
||||
log(L_INFO "de_allocate_pdu()");
|
||||
snmp_log("de_allocate_pdu()");
|
||||
|
||||
struct agentx_header *h;
|
||||
SNMP_CREATE(pkt, struct agentx_header, h);
|
||||
@ -125,7 +125,7 @@ de_allocate_pdu(struct snmp_proto *p, struct oid *oid, u8 type)
|
||||
}
|
||||
|
||||
else
|
||||
log(L_INFO "de_allocate_pdu(): insufficient size");
|
||||
snmp_log("de_allocate_pdu(): insufficient size");
|
||||
}
|
||||
*/
|
||||
|
||||
@ -141,7 +141,7 @@ un_register_pdu(struct snmp_proto *p, struct oid *oid, uint index, uint len, u8
|
||||
/* conditional +4 for upper-bound */
|
||||
if (size > AGENTX_HEADER_SIZE + snmp_oid_size(oid) + ((len > 1) ? 4 : 0))
|
||||
{
|
||||
log(L_INFO "un_register_pdu()");
|
||||
snmp_log("un_register_pdu()");
|
||||
struct agentx_un_register_pdu *ur;
|
||||
SNMP_CREATE(pkt, struct agentx_un_register_pdu, ur);
|
||||
struct agentx_header *h = &ur->h;
|
||||
@ -157,7 +157,7 @@ un_register_pdu(struct snmp_proto *p, struct oid *oid, uint index, uint len, u8
|
||||
STORE(ur->range_subid, (len > 1) ? index : 0);
|
||||
|
||||
pkt = snmp_put_oid(pkt, oid);
|
||||
log(L_INFO "pkt - buf : %lu sizeof %u", pkt -buf, AGENTX_HEADER_SIZE);
|
||||
snmp_log("pkt - buf : %lu sizeof %u", pkt -buf, AGENTX_HEADER_SIZE);
|
||||
|
||||
/* place upper-bound if needed */
|
||||
if (len > 1)
|
||||
@ -170,21 +170,21 @@ un_register_pdu(struct snmp_proto *p, struct oid *oid, uint index, uint len, u8
|
||||
SNMP_UPDATE(h, snmp_pkt_len(buf, pkt));
|
||||
|
||||
for (uint i = 0; i < pkt - buf; i++)
|
||||
log(L_INFO "%p: %02X", buf+i, *(buf + i));
|
||||
snmp_log("%p: %02X", buf+i, *(buf + i));
|
||||
|
||||
log(L_INFO "sending (un)register %d", type);
|
||||
snmp_log("sending (un)register %d", type);
|
||||
int ret = sk_send(sk, pkt - buf);
|
||||
|
||||
if (ret == 0)
|
||||
log(L_INFO "sk_send sleep");
|
||||
snmp_log("sk_send sleep");
|
||||
else if (ret < 0)
|
||||
log(L_INFO "sk_send err %d", ret);
|
||||
snmp_log("sk_send err %d", ret);
|
||||
else
|
||||
log(L_INFO "sk_send ok !!");
|
||||
snmp_log("sk_send ok !!");
|
||||
}
|
||||
|
||||
else
|
||||
log(L_INFO "un_register_pdu() insufficient size");
|
||||
snmp_log("un_register_pdu() insufficient size");
|
||||
}
|
||||
|
||||
/* register pdu */
|
||||
@ -209,7 +209,7 @@ close_pdu(struct snmp_proto *p, u8 reason)
|
||||
byte *buf, *pkt;
|
||||
buf = pkt = sk->tbuf;
|
||||
uint size = sk->tbsize;
|
||||
log(L_INFO "close_pdu() size: %u %c %u", size, (size > AGENTX_HEADER_SIZE + 4)
|
||||
snmp_log("close_pdu() size: %u %c %u", size, (size > AGENTX_HEADER_SIZE + 4)
|
||||
? '>':'<', AGENTX_HEADER_SIZE);
|
||||
|
||||
/* +4B for reason */
|
||||
@ -225,13 +225,13 @@ close_pdu(struct snmp_proto *p, u8 reason)
|
||||
|
||||
SNMP_UPDATE(h, snmp_pkt_len(buf, pkt));
|
||||
|
||||
log(L_INFO "preparing to sk_send()");
|
||||
snmp_log("preparing to sk_send()");
|
||||
int ret = sk_send(sk, pkt - buf);
|
||||
|
||||
if (ret == 0)
|
||||
log(L_INFO "sk_send sleep");
|
||||
snmp_log("sk_send sleep");
|
||||
else if (ret < 0)
|
||||
log(L_INFO "sk_send err");
|
||||
snmp_log("sk_send err");
|
||||
else
|
||||
log(L_INFO, "sk_send ok !!");
|
||||
}
|
||||
@ -253,7 +253,7 @@ parse_pkt(struct snmp_proto *p, byte *buf, uint size)
|
||||
|
||||
uint len = 0;
|
||||
struct agentx_header *h = (void *) buf;
|
||||
log(L_INFO "parse_pkt got type %u", h->type);
|
||||
snmp_log("parse_pkt got type %u", h->type);
|
||||
switch (h->type)
|
||||
{
|
||||
case AGENTX_RESPONSE_PDU:
|
||||
@ -277,18 +277,18 @@ parse_pkt(struct snmp_proto *p, byte *buf, uint size)
|
||||
die("unknown packet type %u", h->type);
|
||||
}
|
||||
|
||||
log(L_INFO "parsed, sending ... to addr %I:%u -> %I:%u",
|
||||
snmp_log("parsed, sending ... to addr %I:%u -> %I:%u",
|
||||
p->sock->saddr, p->sock->sport, p->sock->daddr, p->sock->dport);
|
||||
if (len && p->state != SNMP_ERR)
|
||||
{
|
||||
p->to_send = len;
|
||||
int ret = sk_send(p->sock, len);
|
||||
log(L_INFO "message sent");
|
||||
snmp_log("message sent");
|
||||
|
||||
if (ret == 0)
|
||||
log(L_INFO "sk_send sleep");
|
||||
snmp_log("sk_send sleep");
|
||||
else if (ret < 0)
|
||||
log(L_INFO "sk_send err no: %d '%s'", ret, strerror(ret));
|
||||
snmp_log("sk_send err no: %d '%s'", ret, strerror(ret));
|
||||
else
|
||||
log("sk_send OK ! !!");
|
||||
}
|
||||
@ -305,18 +305,18 @@ parse_response(struct snmp_proto *p, byte *buf, uint size)
|
||||
struct agentx_response *r = (void *) buf;
|
||||
struct agentx_header *h = &r->h;
|
||||
|
||||
log(L_INFO "endianity: %s, session %u, transaction: %u", (h->flags & AGENTX_NETWORK_BYTE_ORDER) ? "big end":
|
||||
snmp_log("endianity: %s, session %u, transaction: %u", (h->flags & AGENTX_NETWORK_BYTE_ORDER) ? "big end":
|
||||
"little end", h->session_id, h->transaction_id);
|
||||
log(L_INFO "sid: %3u\ttid: %3u\tpid: %3u\t", p->session_id, p->transaction_id,
|
||||
snmp_log("sid: %3u\ttid: %3u\tpid: %3u\t", p->session_id, p->transaction_id,
|
||||
p->packet_id);
|
||||
|
||||
log(L_INFO "size %u", h->payload);
|
||||
log(L_INFO "uptime: %u s", r->uptime);
|
||||
snmp_log("size %u", h->payload);
|
||||
snmp_log("uptime: %u s", r->uptime);
|
||||
|
||||
if (r->err == AGENTX_RES_NO_ERROR)
|
||||
do_response(p, buf, size);
|
||||
else
|
||||
log(L_INFO "an error occured '%s'", snmp_errs[get_u16(&r->err) -
|
||||
snmp_log("an error occured '%s'", snmp_errs[get_u16(&r->err) -
|
||||
SNMP_ERR_SHIFT]);
|
||||
|
||||
return 1;
|
||||
@ -345,7 +345,7 @@ do_response(struct snmp_proto *p, byte *buf, uint size UNUSED)
|
||||
|
||||
p->transaction_id++;
|
||||
|
||||
log(L_INFO "sending register-pdu");
|
||||
snmp_log("sending register-pdu");
|
||||
|
||||
// register whole BGP4-MIB
|
||||
u32 arr_bgp[] = {1, 15, 1};
|
||||
@ -380,30 +380,32 @@ do_response(struct snmp_proto *p, byte *buf, uint size UNUSED)
|
||||
// TODO register all bind bgp connections
|
||||
snmp_register(p, o2, 9, 24);
|
||||
|
||||
log(L_INFO "before hash walk");
|
||||
snmp_log("before hash walk");
|
||||
HASH_WALK(p->bgp_hash, next, peer)
|
||||
{
|
||||
snmp_oid_ip4_index(o2, 5, ipa_to_ip4(peer->peer_ip));
|
||||
|
||||
log(L_INFO "");
|
||||
log(L_INFO "o2 n_subid %u prefix %u include %u", o2->n_subid,
|
||||
snmp_log("");
|
||||
snmp_log("o2 n_subid %u prefix %u include %u", o2->n_subid,
|
||||
o2->prefix, o2->include);
|
||||
for (int i = 0; i < o2->n_subid; i++)
|
||||
log(L_INFO "%d: %u", i, o2->ids[i]);
|
||||
log(L_INFO "");
|
||||
snmp_log("%d: %u", i, o2->ids[i]);
|
||||
snmp_log("");
|
||||
|
||||
snmp_register(p, o2, 9, 24);
|
||||
}
|
||||
HASH_WALK_END;
|
||||
log(L_INFO "after hash walk");
|
||||
snmp_log("after hash walk");
|
||||
|
||||
mb_free(o2);
|
||||
|
||||
snmp_log("changing proto_snmp state to REGISTER");
|
||||
p->state = SNMP_REGISTR;
|
||||
//proto_notify_state(&p->p, PS_UP);
|
||||
break;
|
||||
|
||||
case SNMP_REGISTR:
|
||||
snmp_log("chaning proto_snmp state to CONNECTED");
|
||||
p->state = SNMP_CONN;
|
||||
break;
|
||||
|
||||
@ -418,7 +420,7 @@ do_response(struct snmp_proto *p, byte *buf, uint size UNUSED)
|
||||
static uint UNUSED
|
||||
parse_get_pdu(struct snmp_proto *p, byte *buf, uint size)
|
||||
{
|
||||
log(L_INFO "parse_get_pdu()");
|
||||
snmp_log("parse_get_pdu()");
|
||||
|
||||
sock *sk = p->sock;
|
||||
byte *res_pkt, *res = sk->tbuf;
|
||||
@ -427,25 +429,25 @@ parse_get_pdu(struct snmp_proto *p, byte *buf, uint size)
|
||||
if (size < AGENTX_HEADER_SIZE)
|
||||
return 0;
|
||||
|
||||
log(L_INFO "Get-PDU enough room %p", buf);
|
||||
snmp_log("Get-PDU enough room %p", buf);
|
||||
|
||||
struct agentx_header *h = (void *) buf;
|
||||
ADVANCE(buf, size, AGENTX_HEADER_SIZE);
|
||||
log(L_INFO "advancing %p cause %u", buf, AGENTX_HEADER_SIZE);
|
||||
snmp_log("advancing %p cause %u", buf, AGENTX_HEADER_SIZE);
|
||||
|
||||
int byte_ord = h->flags & AGENTX_NETWORK_BYTE_ORDER;
|
||||
|
||||
byte *pkt = buf;
|
||||
uint pkt_size = LOAD(h->payload, byte_ord);
|
||||
log(L_INFO "RX packet size is %u", pkt_size);
|
||||
snmp_log("RX packet size is %u", pkt_size);
|
||||
|
||||
uint clen; /* context len */
|
||||
char *context = NULL;
|
||||
SNMP_LOAD_CONTEXT(p, h, pkt, context, clen)
|
||||
log(L_INFO "after context load %p, pkt == buf %d", pkt, pkt == buf);
|
||||
snmp_log("after context load %p, pkt == buf %d", pkt, pkt == buf);
|
||||
|
||||
res_pkt = prepare_response(p, res, rsize);
|
||||
log(L_INFO "response header created: %p (%u)", res_pkt, res_pkt - res);
|
||||
snmp_log("response header created: %p (%u)", res_pkt, res_pkt - res);
|
||||
/* parsing one search range */
|
||||
uint ind = 1;
|
||||
int err = 0;
|
||||
@ -458,10 +460,10 @@ parse_get_pdu(struct snmp_proto *p, byte *buf, uint size)
|
||||
o_end = (struct oid *) pkt; // for Get-PDU always null
|
||||
pkt += snmp_oid_size(o_end);
|
||||
|
||||
log(L_INFO "sizes o_start %lu o_end %lu", snmp_oid_size(o_start),
|
||||
snmp_log("sizes o_start %lu o_end %lu", snmp_oid_size(o_start),
|
||||
snmp_oid_size(o_end));
|
||||
|
||||
log(L_INFO "o_subid: %u o_prefix %u o_include %u ---",
|
||||
snmp_log("o_subid: %u o_prefix %u o_include %u ---",
|
||||
o_start->n_subid, o_start->prefix, o_start->include);
|
||||
|
||||
|
||||
@ -477,13 +479,13 @@ parse_get_pdu(struct snmp_proto *p, byte *buf, uint size)
|
||||
STORE_16(vb_start->pad, 0); // padding zeroing
|
||||
res_pkt += vb_size(vb_start);
|
||||
|
||||
log(L_INFO " vb_size() rpkt %p %u", res_pkt, res_pkt - res);
|
||||
snmp_log(" vb_size() rpkt %p %u", res_pkt, res_pkt - res);
|
||||
|
||||
STORE_PTR(res_pkt, 0x1234ABCD);
|
||||
|
||||
log(L_INFO " STORE_PTR int-value rpkt %p %u", res_pkt, res_pkt - res);
|
||||
snmp_log(" STORE_PTR int-value rpkt %p %u", res_pkt, res_pkt - res);
|
||||
res_pkt += 4;
|
||||
log(L_INFO " shift rpkt %p %u", res_pkt, res_pkt - res);
|
||||
snmp_log(" shift rpkt %p %u", res_pkt, res_pkt - res);
|
||||
*/
|
||||
ind++;
|
||||
}
|
||||
@ -494,19 +496,19 @@ parse_get_pdu(struct snmp_proto *p, byte *buf, uint size)
|
||||
if (err)
|
||||
response_err_ind(res, err, ind);
|
||||
|
||||
log(L_INFO "res->payload %u (loaded) %u, trying to send: %u",
|
||||
snmp_log("res->payload %u (loaded) %u, trying to send: %u",
|
||||
rh->payload, LOAD(rh->payload, rh->flags & AGENTX_NETWORK_BYTE_ORDER),
|
||||
res_pkt - res + 4);
|
||||
|
||||
int ret = sk_send(sk, res_pkt - res);
|
||||
log(L_INFO "message sent");
|
||||
snmp_log("message sent");
|
||||
|
||||
if (ret == 0)
|
||||
log(L_INFO "sk_send sleep");
|
||||
snmp_log("sk_send sleep");
|
||||
else if (ret < 0)
|
||||
log(L_INFO "sk_send err no: %d", ret);
|
||||
snmp_log("sk_send err no: %d", ret);
|
||||
else
|
||||
log(L_INFO "sk_send OK !!");
|
||||
snmp_log("sk_send OK !!");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@ -531,11 +533,11 @@ static byte *
|
||||
snmp_get_next(struct snmp_proto *p, struct oid *o_start, struct oid *o_end,
|
||||
byte *pkt, uint rsize, uint contid, u8 mib_class, int byte_ord)
|
||||
{
|
||||
log(L_INFO "type GetNext-PDU");
|
||||
snmp_log("type GetNext-PDU");
|
||||
struct oid *o_copy;
|
||||
o_copy = search_mib(p, o_start, o_end, NULL, mib_class, contid);
|
||||
|
||||
log(L_INFO "search result");
|
||||
snmp_log("search result");
|
||||
snmp_oid_dump(o_copy);
|
||||
|
||||
struct snmp_error error = (struct snmp_error) {
|
||||
@ -564,14 +566,14 @@ byte *pkt, uint rsize, uint contid, u8 mib_class, int byte_ord)
|
||||
vb->type = AGENTX_NO_SUCH_OBJECT;
|
||||
}
|
||||
|
||||
log(L_INFO "over HERE ");
|
||||
snmp_log("over HERE ");
|
||||
return pkt;
|
||||
}
|
||||
|
||||
static byte *
|
||||
snmp_get_bulk(struct snmp_proto *p, struct oid *o_start, struct oid *o_end, byte *pkt, uint size, struct agentx_bulk_state *state, uint contid, int byte_ord)
|
||||
{
|
||||
log(L_INFO "type GetBulk-PDU");
|
||||
snmp_log("type GetBulk-PDU");
|
||||
|
||||
u8 mib_class = get_mib_class(o_start);
|
||||
|
||||
@ -634,7 +636,7 @@ snmp_get_bulk(struct snmp_proto *p, struct oid *o_start, struct oid *o_end, byte
|
||||
static uint
|
||||
parse_gets_pdu(struct snmp_proto *p, byte *req, uint size)
|
||||
{
|
||||
log(L_INFO "parse_gets_pdu");
|
||||
snmp_log("parse_gets_pdu");
|
||||
|
||||
sock *sk = p->sock;
|
||||
byte *res_pkt, *res = sk->tbuf;
|
||||
@ -645,7 +647,7 @@ parse_gets_pdu(struct snmp_proto *p, byte *req, uint size)
|
||||
|
||||
struct agentx_header *h = (void *) req;
|
||||
ADVANCE(req, size, AGENTX_HEADER_SIZE);
|
||||
log(L_INFO "advancing %p cause header", req);
|
||||
snmp_log("advancing %p cause header", req);
|
||||
|
||||
byte *pkt = req;
|
||||
|
||||
@ -687,7 +689,7 @@ parse_gets_pdu(struct snmp_proto *p, byte *req, uint size)
|
||||
/* advertised size of oid is greater then size of message */
|
||||
if (snmp_oid_size(o_start_b) > size || snmp_oid_size(o_end_b) > size)
|
||||
{
|
||||
log(L_INFO "too big o_start or o_end");
|
||||
snmp_log("too big o_start or o_end");
|
||||
err = -1; /* parse error too big n_subid (greater than message) */
|
||||
continue;
|
||||
}
|
||||
@ -704,12 +706,12 @@ parse_gets_pdu(struct snmp_proto *p, byte *req, uint size)
|
||||
|
||||
u8 mib_class = get_mib_class(o_start);
|
||||
|
||||
log(L_INFO "get mib_class () %d -> next pdu parsing ... ", mib_class);
|
||||
snmp_log("get mib_class () %d -> next pdu parsing ... ", mib_class);
|
||||
|
||||
switch (h->type)
|
||||
{
|
||||
case AGENTX_GET_PDU:
|
||||
log(L_INFO "type Get-PDU");
|
||||
snmp_log("type Get-PDU");
|
||||
|
||||
struct snmp_error error = (struct snmp_error) {
|
||||
.oid = o_start,
|
||||
@ -733,7 +735,7 @@ parse_gets_pdu(struct snmp_proto *p, byte *req, uint size)
|
||||
// REMOVE ME
|
||||
#if 0
|
||||
{
|
||||
log(L_INFO "type GetBulk-PDU");
|
||||
snmp_log("type GetBulk-PDU");
|
||||
|
||||
struct oid *o_curr = NULL;
|
||||
/* TODO add res packet size limiting logic */
|
||||
@ -748,7 +750,7 @@ parse_gets_pdu(struct snmp_proto *p, byte *req, uint size)
|
||||
/* no item found */
|
||||
if (res_pkt == res + sizeof(struct agentx_response))
|
||||
{
|
||||
log(L_INFO "no item found ");
|
||||
snmp_log("no item found ");
|
||||
err = -2;
|
||||
continue;
|
||||
}
|
||||
@ -779,15 +781,15 @@ parse_gets_pdu(struct snmp_proto *p, byte *req, uint size)
|
||||
break;
|
||||
}
|
||||
|
||||
log(L_INFO " pasting size");
|
||||
snmp_log(" pasting size");
|
||||
struct agentx_header *rh = (void *) res;
|
||||
SNMP_UPDATE(rh, snmp_pkt_len(res, res_pkt));
|
||||
|
||||
log(L_INFO "%p %lu", p->sock->ttx, res_pkt - res);
|
||||
log(L_INFO "%p %p", res_pkt, res);
|
||||
snmp_log("%p %lu", p->sock->ttx, res_pkt - res);
|
||||
snmp_log("%p %p", res_pkt, res);
|
||||
|
||||
for (int i = 0; i < res_pkt - res; i++)
|
||||
log(L_INFO "%p: %02X", res + i, *(res + i));
|
||||
snmp_log("%p: %02X", res + i, *(res + i));
|
||||
|
||||
return res_pkt - res;
|
||||
}
|
||||
@ -795,7 +797,7 @@ parse_gets_pdu(struct snmp_proto *p, byte *req, uint size)
|
||||
void
|
||||
snmp_start_subagent(struct snmp_proto *p)
|
||||
{
|
||||
log(L_INFO "snmp_start_subagent() starting subagent");
|
||||
snmp_log("snmp_start_subagent() starting subagent");
|
||||
|
||||
/* blank oid means unsupported */
|
||||
struct oid *o = mb_allocz(p->p.pool, sizeof(struct oid));
|
||||
@ -806,7 +808,7 @@ snmp_start_subagent(struct snmp_proto *p)
|
||||
void
|
||||
snmp_stop_subagent(struct snmp_proto *p)
|
||||
{
|
||||
log(L_INFO "snmp_stop_subagent()");
|
||||
snmp_log("snmp_stop_subagent()");
|
||||
sock *sk = p->sock;
|
||||
|
||||
if (p->state == SNMP_CONN)
|
||||
@ -830,7 +832,7 @@ oid_prefix(struct oid *o, u32 *prefix, uint len)
|
||||
int
|
||||
snmp_rx(sock *sk, uint size)
|
||||
{
|
||||
log(L_INFO "snmp_rx()");
|
||||
snmp_log("snmp_rx()");
|
||||
struct snmp_proto *p = sk->data;
|
||||
byte *pkt = sk->rbuf;
|
||||
|
||||
@ -856,7 +858,7 @@ snmp_ping(struct snmp_proto *p)
|
||||
|
||||
if (size > AGENTX_HEADER_SIZE)
|
||||
{
|
||||
log(L_INFO "ping_pdu()");
|
||||
snmp_log("ping_pdu()");
|
||||
struct agentx_header *h;
|
||||
log("before dead %p", pkt );
|
||||
SNMP_CREATE(pkt, struct agentx_header, h);
|
||||
@ -867,15 +869,15 @@ snmp_ping(struct snmp_proto *p)
|
||||
int ret = sk_send(sk, AGENTX_HEADER_SIZE);
|
||||
|
||||
if (ret == 0)
|
||||
log(L_INFO "sk_send sleep");
|
||||
snmp_log("sk_send sleep");
|
||||
else if (ret < 0)
|
||||
log(L_INFO "sk_send err %d", ret);
|
||||
snmp_log("sk_send err %d", ret);
|
||||
else
|
||||
log("sk_send ok ! !");
|
||||
}
|
||||
|
||||
else
|
||||
log(L_INFO "ping_pdu() insufficient size");
|
||||
snmp_log("ping_pdu() insufficient size");
|
||||
}
|
||||
|
||||
|
||||
@ -986,7 +988,7 @@ has_inet_prefix(struct oid *o)
|
||||
static struct oid *
|
||||
search_mib(struct snmp_proto *p, struct oid *o_start, struct oid *o_end, struct oid *o_curr, u8 mib_class, uint contid UNUSED)
|
||||
{
|
||||
log(L_INFO "search_mib()");
|
||||
snmp_log("search_mib()");
|
||||
|
||||
if (!o_start)
|
||||
return NULL;
|
||||
@ -1287,7 +1289,7 @@ find_ospf_record(struct snmp_proto *p, struct oid *o, byte *buf, uint size)
|
||||
static inline byte *
|
||||
find_prefixed(struct snmp_proto *p, struct oid *o, byte *buf, uint size, uint contid)
|
||||
{
|
||||
log(L_INFO "find_prefixed() - shouldn't be called");
|
||||
snmp_log("find_prefixed() - shouldn't be called");
|
||||
struct agentx_varbind *vb = snmp_create_varbind(buf, o);
|
||||
buf += snmp_varbind_size(vb);
|
||||
|
||||
@ -1301,7 +1303,7 @@ find_prefixed(struct snmp_proto *p, struct oid *o, byte *buf, uint size, uint co
|
||||
switch (o->ids[1])
|
||||
{
|
||||
case SNMP_BGP4_MIB:
|
||||
log(L_INFO "find_prefixed() BGP4");
|
||||
snmp_log("find_prefixed() BGP4");
|
||||
//return snmp_bgp_record(p, o, buf, size, contid);
|
||||
return buf;
|
||||
|
||||
@ -1390,7 +1392,7 @@ find_n_fill(struct snmp_proto *p, struct oid *o, byte *buf, uint size, uint cont
|
||||
static byte *snmp_mib_fill(struct snmp_proto *p, struct oid *oid, u8 mib_class,
|
||||
byte *buf, uint size, struct snmp_error *error, uint contid, int byte_ord)
|
||||
{
|
||||
log(L_INFO "snmp_mib_fill()");
|
||||
snmp_log("snmp_mib_fill()");
|
||||
|
||||
if (oid == NULL)
|
||||
return buf;
|
||||
@ -1425,7 +1427,7 @@ byte *buf, uint size, struct snmp_error *error, uint contid, int byte_ord)
|
||||
static byte *
|
||||
prepare_response(struct snmp_proto *p, byte *buf, uint size)
|
||||
{
|
||||
log(L_INFO "prepare_response()");
|
||||
snmp_log("prepare_response()");
|
||||
|
||||
if (size < sizeof(struct agentx_response))
|
||||
return NULL;
|
||||
@ -1447,7 +1449,7 @@ prepare_response(struct snmp_proto *p, byte *buf, uint size)
|
||||
static void
|
||||
response_err_ind(byte *buf, uint err, uint ind)
|
||||
{
|
||||
log(L_INFO "reponse_err_ind() %u %u", err, ind);
|
||||
snmp_log("reponse_err_ind() %u %u", err, ind);
|
||||
struct agentx_response *res = (void *) buf;
|
||||
|
||||
res->err = err;
|
||||
|
@ -274,4 +274,7 @@ enum agentx_response_err {
|
||||
|
||||
int snmp_rx(sock *sk, uint size);
|
||||
|
||||
// debug wrapper
|
||||
#define snmp_log(...) log(L_INFO "snmp " __VA_ARGS__)
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user