mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-11-14 23:28:43 +00:00
102 lines
1.8 KiB
C
102 lines
1.8 KiB
C
|
/*
|
||
|
* BIRD -- Simple Network Management Protocol (SNMP)
|
||
|
*
|
||
|
* (c) 2022 Vojtech Vilimek <vojtech.vilimek@nic.cz>
|
||
|
* (c) 2022 CZ.NIC z.s.p.o.
|
||
|
*
|
||
|
* Can be freely distributed and used under the terms of the GNU GPL.
|
||
|
*/
|
||
|
|
||
|
#include "nest/bird.h"
|
||
|
#include "nest/protocol.h"
|
||
|
#include "nest/cli.h"
|
||
|
|
||
|
#include "proto/snmp/snmp.h"
|
||
|
|
||
|
static struct proto *
|
||
|
snmp_init(struct proto_config *CF)
|
||
|
{
|
||
|
struct proto *P = proto_new(CF);
|
||
|
struct snmp_proto *p = (void *) P;
|
||
|
|
||
|
p->rl_gen = (struct tbf) TBF_DEFAULT_LOG_LIMITS;
|
||
|
|
||
|
return P;
|
||
|
}
|
||
|
|
||
|
static int
|
||
|
snmp_start(struct proto *P)
|
||
|
{
|
||
|
struct channel_config *cc;
|
||
|
WALK_LIST(cc, P->cf->channels)
|
||
|
{
|
||
|
struct channel *c = NULL;
|
||
|
proto_configure_channel(P, &c, cc);
|
||
|
}
|
||
|
|
||
|
return PS_UP;
|
||
|
}
|
||
|
|
||
|
static int
|
||
|
snmp_reconfigure(struct proto *P, struct proto_config *CF)
|
||
|
{
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
static void
|
||
|
snmp_show_proto_info(struct proto *P)
|
||
|
{
|
||
|
//struct stats_proto *p = (void *) P;
|
||
|
|
||
|
struct snmp_channel *sc;
|
||
|
|
||
|
WALK_LIST(sc, P->channels)
|
||
|
{
|
||
|
cli_msg(-1006, " Channel %s", sc->c.name);
|
||
|
|
||
|
if (!P->disabled)
|
||
|
{
|
||
|
cli_msg(-1006, " enabled");
|
||
|
}
|
||
|
else
|
||
|
cli_msg(-1006, " disabled");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static int
|
||
|
snmp_channel_start(struct channel *C)
|
||
|
{
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
static void
|
||
|
snmp_channel_shutdown(struct channel *C)
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
struct channel_class channel_snmp = {
|
||
|
.channel_size = sizeof(struct snmp_channel),
|
||
|
.config_size = sizeof(struct snmp_channel_config),
|
||
|
.start = snmp_channel_start,
|
||
|
.shutdown = snmp_channel_shutdown,
|
||
|
};
|
||
|
|
||
|
struct protocol proto_snmp = {
|
||
|
.name = "Snmp",
|
||
|
.template = "snmp%d",
|
||
|
.channel_mask = NB_ANY,
|
||
|
.proto_size = sizeof(struct snmp_proto),
|
||
|
.config_size = sizeof(struct snmp_config),
|
||
|
.init = snmp_init,
|
||
|
.start = snmp_start,
|
||
|
.reconfigure = snmp_reconfigure,
|
||
|
.show_proto_info = snmp_show_proto_info,
|
||
|
};
|
||
|
|
||
|
void
|
||
|
snmp_build(void)
|
||
|
{
|
||
|
proto_build(&proto_snmp);
|
||
|
}
|