]> git.stg.codes - stg.git/blob - projects/stargazer/plugins/other/snmp/snmp.cpp
4d26a8b92a83f0b11200892a0016c0eeaba875d4
[stg.git] / projects / stargazer / plugins / other / snmp / snmp.cpp
1 #include "asn1/OpenPDU.h"
2
3 #include "snmp.h"
4 #include "stg/common.h"
5
6 class SNMP_AGENT_CREATOR
7 {
8 private:
9     SNMP_AGENT * snmpAgent;
10
11 public:
12     SNMP_AGENT_CREATOR()
13         : snmpAgent(new SNMP_AGENT())
14         {
15         };
16     ~SNMP_AGENT_CREATOR()
17         {
18         delete snmpAgent;
19         };
20
21     SNMP_AGENT * GetPlugin()
22         {
23         return snmpAgent;
24         };
25 };
26
27 SNMP_AGENT_CREATOR pc;
28
29 int output(const void * buffer, size_t size, void * data)
30 {
31 int * fd = static_cast<int *>(data);
32 return write(*fd, buffer, size);
33 }
34
35 int SendOpenPDU(int fd, OpenPDU & msg)
36 {
37 asn_enc_rval_t error;
38
39 error = der_encode(&asn_DEF_OpenPDU, &msg, output, &fd);
40
41 if (error.encoded == -1)
42     {
43     printfd(__FILE__, "Could not encode OpenPDU (at %s)\n",
44             error.failed_type ? error.failed_type->name : "unknown");
45     return -1;
46     }
47 else
48     {
49     printfd(__FILE__, "OpenPDU encoded successfully");
50     }
51 return 0;
52 }
53
54 SNMP_AGENT::SNMP_AGENT()
55     : PLUGIN(),
56       running(false),
57       stopped(true)
58 {
59 pthread_mutex_init(&mutex, NULL);
60 }
61
62 SNMP_AGENT::~SNMP_AGENT()
63 {
64 pthread_mutex_destroy(&mutex);
65 }
66
67 int SNMP_AGENT::ParseSettings()
68 {
69 return 0;
70 }
71
72 int SNMP_AGENT::Start()
73 {
74 return 0;
75 }
76
77 int SNMP_AGENT::Stop()
78 {
79 return 0;
80 }
81
82 void * SNMP_AGENT::Runner(void * d)
83 {
84 SNMP_AGENT * snmpAgent = static_cast<SNMP_AGENT *>(d);
85
86 snmpAgent->Run();
87
88 return NULL;
89 }
90
91 void SNMP_AGENT::Run()
92 {
93 }