diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/.gitignore | 1 | ||||
-rw-r--r-- | src/Makefile.am | 5 | ||||
-rw-r--r-- | src/VARNISH-MIB.txt | 83 | ||||
-rw-r--r-- | src/ban.c | 191 | ||||
-rw-r--r-- | src/varnish_mib.h | 52 | ||||
-rw-r--r-- | src/varnish_mib.mib2c | 258 |
6 files changed, 503 insertions, 87 deletions
diff --git a/src/.gitignore b/src/.gitignore index 49f397c..61958b7 100644 --- a/src/.gitignore +++ b/src/.gitignore | |||
@@ -1 +1,2 @@ | |||
1 | varnish_mib.c | 1 | varnish_mib.c |
2 | varnish_mib.h | ||
diff --git a/src/Makefile.am b/src/Makefile.am index a0e7e72..4643fde 100644 --- a/src/Makefile.am +++ b/src/Makefile.am | |||
@@ -27,9 +27,10 @@ varnish_mib_la_SOURCES = \ | |||
27 | vcli.c | 27 | vcli.c |
28 | 28 | ||
29 | BUILT_SOURCES = \ | 29 | BUILT_SOURCES = \ |
30 | varnish_mib.c | 30 | varnish_mib.c\ |
31 | varnish_mib.h | ||
31 | 32 | ||
32 | varnish_mib.c: varnish_mib.mib2c VARNISH-MIB.txt | 33 | varnish_mib.c varnish_mib.h: varnish_mib.mib2c VARNISH-MIB.txt |
33 | 34 | ||
34 | .mib2c.c: | 35 | .mib2c.c: |
35 | MIBDIRS=${top_srcdir}/src:${NET_SNMP_MIBDIRS} MIBS="+VARNISH-MIB" \ | 36 | MIBDIRS=${top_srcdir}/src:${NET_SNMP_MIBDIRS} MIBS="+VARNISH-MIB" \ |
diff --git a/src/VARNISH-MIB.txt b/src/VARNISH-MIB.txt index cde935a..47e39c8 100644 --- a/src/VARNISH-MIB.txt +++ b/src/VARNISH-MIB.txt | |||
@@ -11,16 +11,18 @@ VARNISH-MIB DEFINITIONS ::= BEGIN | |||
11 | IMPORTS | 11 | IMPORTS |
12 | MODULE-IDENTITY, OBJECT-TYPE, enterprises, Counter64, TimeTicks | 12 | MODULE-IDENTITY, OBJECT-TYPE, enterprises, Counter64, TimeTicks |
13 | FROM SNMPv2-SMI | 13 | FROM SNMPv2-SMI |
14 | DateAndTime | ||
15 | FROM SNMPv2-TC | ||
14 | OBJECT-GROUP, MODULE-COMPLIANCE | 16 | OBJECT-GROUP, MODULE-COMPLIANCE |
15 | FROM SNMPv2-CONF; | 17 | FROM SNMPv2-CONF; |
16 | 18 | ||
17 | varnishMIB MODULE-IDENTITY | 19 | varnishMIB MODULE-IDENTITY |
18 | LAST-UPDATED "201411241848Z" | 20 | LAST-UPDATED "201411260759Z" |
19 | ORGANIZATION "Shared Autonomous sYstems" | 21 | ORGANIZATION "Shared Autonomous sYstems" |
20 | CONTACT-INFO "mhe@say.no" | 22 | CONTACT-INFO "mhe@say.no" |
21 | DESCRIPTION | 23 | DESCRIPTION |
22 | "This MIB module defines objects for Varnish reverse web proxy." | 24 | "This MIB module defines objects for Varnish reverse web proxy." |
23 | REVISION "201411241848Z" | 25 | REVISION "201411260759Z" |
24 | DESCRIPTION | 26 | DESCRIPTION |
25 | "Initial version." | 27 | "Initial version." |
26 | ::= { varnish 0 } | 28 | ::= { varnish 0 } |
@@ -74,8 +76,14 @@ clientCacheMisses OBJECT-TYPE | |||
74 | "Cache misses" | 76 | "Cache misses" |
75 | ::= { client 5 } | 77 | ::= { client 5 } |
76 | 78 | ||
79 | VarnishBanString ::= TEXTUAL-CONVENTION | ||
80 | DISPLAY-HINT "1024t" | ||
81 | STATUS current | ||
82 | DESCRIPTION "" | ||
83 | SYNTAX OCTET STRING (SIZE (0..1024)) | ||
84 | |||
77 | clientBan OBJECT-TYPE | 85 | clientBan OBJECT-TYPE |
78 | SYNTAX OCTET STRING (SIZE(0..1024)) | 86 | SYNTAX VarnishBanString |
79 | MAX-ACCESS read-write | 87 | MAX-ACCESS read-write |
80 | STATUS current | 88 | STATUS current |
81 | DESCRIPTION | 89 | DESCRIPTION |
@@ -527,8 +535,63 @@ bansPersistedFragmentation OBJECT-TYPE | |||
527 | DESCRIPTION | 535 | DESCRIPTION |
528 | "Extra bytes in persisted ban lists due to fragmentation" | 536 | "Extra bytes in persisted ban lists due to fragmentation" |
529 | ::= { bans 17 } | 537 | ::= { bans 17 } |
530 | |||
531 | 538 | ||
539 | banTable OBJECT-TYPE | ||
540 | SYNTAX SEQUENCE OF VarnishBanEntry | ||
541 | MAX-ACCESS not-accessible | ||
542 | STATUS current | ||
543 | DESCRIPTION | ||
544 | "The (conceptual) table listing available bans" | ||
545 | ::= { bans 18 } | ||
546 | |||
547 | varnishBanEntry OBJECT-TYPE | ||
548 | SYNTAX VarnishBanEntry | ||
549 | MAX-ACCESS not-accessible | ||
550 | STATUS current | ||
551 | DESCRIPTION | ||
552 | "An entry (conceptual row) representing a ban" | ||
553 | INDEX { banIndex } | ||
554 | ::= { banTable 1 } | ||
555 | |||
556 | VarnishBanEntry ::= SEQUENCE { | ||
557 | banIndex Integer32, | ||
558 | banTime DateAndTime, | ||
559 | banRefCount Counter64, | ||
560 | banExpression VarnishBanString | ||
561 | } | ||
562 | |||
563 | banIndex OBJECT-TYPE | ||
564 | SYNTAX Integer32 | ||
565 | MAX-ACCESS not-accessible | ||
566 | STATUS current | ||
567 | DESCRIPTION | ||
568 | "A number uniquely identifying each ban" | ||
569 | ::= { varnishBanEntry 1 } | ||
570 | |||
571 | banTime OBJECT-TYPE | ||
572 | SYNTAX DateAndTime | ||
573 | MAX-ACCESS read-only | ||
574 | STATUS current | ||
575 | DESCRIPTION | ||
576 | "Time when the ban was created" | ||
577 | ::= { varnishBanEntry 2 } | ||
578 | |||
579 | banRefCount OBJECT-TYPE | ||
580 | SYNTAX Counter32 | ||
581 | MAX-ACCESS read-only | ||
582 | STATUS current | ||
583 | DESCRIPTION | ||
584 | "Number of references to this ban" | ||
585 | ::= { varnishBanEntry 3 } | ||
586 | |||
587 | banExpression OBJECT-TYPE | ||
588 | SYNTAX VarnishBanString | ||
589 | MAX-ACCESS read-only | ||
590 | STATUS current | ||
591 | DESCRIPTION | ||
592 | "VCL expression of the ban" | ||
593 | ::= { varnishBanEntry 4 } | ||
594 | |||
532 | -- | 595 | -- |
533 | -- Groups and Compliance | 596 | -- Groups and Compliance |
534 | -- | 597 | -- |
@@ -585,8 +648,13 @@ varnishGroup OBJECT-GROUP | |||
585 | threadsCreated, | 648 | threadsCreated, |
586 | threadsDestroyed, | 649 | threadsDestroyed, |
587 | threadsFailed, | 650 | threadsFailed, |
588 | threadsQueueLength | 651 | threadsQueueLength, |
589 | 652 | banTable, | |
653 | varnishBanEntry, | ||
654 | banIndex, | ||
655 | banTime, | ||
656 | banRefCount, | ||
657 | banExpression | ||
590 | } | 658 | } |
591 | 659 | ||
592 | STATUS current | 660 | STATUS current |
@@ -602,8 +670,7 @@ varnishStandardComplianceV1 MODULE-COMPLIANCE | |||
602 | "Compliance for an Varnish agent" | 670 | "Compliance for an Varnish agent" |
603 | 671 | ||
604 | MODULE | 672 | MODULE |
605 | MANDATORY-GROUPS { | 673 | MANDATORY-GROUPS { varnishGroup } |
606 | varnishGroup} | ||
607 | 674 | ||
608 | ::= { varnishCompl 1 } | 675 | ::= { varnishCompl 1 } |
609 | 676 | ||
@@ -16,6 +16,7 @@ | |||
16 | */ | 16 | */ |
17 | 17 | ||
18 | #include "varnish_mib.h" | 18 | #include "varnish_mib.h" |
19 | #include <ctype.h> | ||
19 | 20 | ||
20 | static int | 21 | static int |
21 | send_ban_cmd(vcli_conn_t *conn, const char *expr) | 22 | send_ban_cmd(vcli_conn_t *conn, const char *expr) |
@@ -50,13 +51,199 @@ varnish_ban(netsnmp_agent_request_info *reqinfo, | |||
50 | } | 51 | } |
51 | memcpy(expr, requests->requestvb->val.string, len); | 52 | memcpy(expr, requests->requestvb->val.string, len); |
52 | expr[len] = 0; | 53 | expr[len] = 0; |
53 | DEBUGMSGTL(("vcli_mib", "ban %s\n", expr)); | 54 | DEBUGMSGTL(("varnish_ban", "setting ban %s\n", expr)); |
54 | rc = vcli_connect(vd, &conn); | 55 | rc = vcli_connect(vd, &conn); |
55 | if (rc == SNMP_ERR_NOERROR) { | 56 | if (rc == SNMP_ERR_NOERROR) { |
56 | rc = send_ban_cmd(&conn, expr); | 57 | rc = send_ban_cmd(&conn, expr); |
57 | vcli_disconnect(&conn); | 58 | vcli_disconnect(&conn); |
58 | } | 59 | } |
59 | free(expr); | 60 | free(expr); |
60 | return rc ? SNMP_ERR_GENERR : SNMP_ERR_NOERROR; | 61 | return rc ? SNMP_ERR_GENERR : SNMP_ERR_NOERROR; |
61 | } | 62 | } |
63 | |||
64 | unsigned banTable_timeout = 60; | ||
62 | 65 | ||
66 | /* | ||
67 | * create a new row in the table | ||
68 | */ | ||
69 | static struct banTable_entry * | ||
70 | create_entry(netsnmp_tdata *table_data, long idx, struct banTable_entry *ent) | ||
71 | { | ||
72 | struct banTable_entry *entry; | ||
73 | netsnmp_tdata_row *row; | ||
74 | |||
75 | entry = SNMP_MALLOC_TYPEDEF(struct banTable_entry); | ||
76 | if (!entry) | ||
77 | return NULL; | ||
78 | |||
79 | row = netsnmp_tdata_create_row(); | ||
80 | if (!row) { | ||
81 | SNMP_FREE(entry); | ||
82 | return NULL; | ||
83 | } | ||
84 | row->data = entry; | ||
85 | *entry = *ent; | ||
86 | |||
87 | entry->banIndex = idx; | ||
88 | netsnmp_tdata_row_add_index(row, ASN_INTEGER, | ||
89 | &entry->banIndex, | ||
90 | sizeof(entry->banIndex)); | ||
91 | if (table_data) | ||
92 | netsnmp_tdata_add_row(table_data, row); | ||
93 | return entry; | ||
94 | } | ||
95 | |||
96 | #define T |