aboutsummaryrefslogtreecommitdiff
path: root/src/betab.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/betab.c')
-rw-r--r--src/betab.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/betab.c b/src/betab.c
index 2979f8b..83d77e3 100644
--- a/src/betab.c
+++ b/src/betab.c
@@ -79,7 +79,7 @@ struct backend_dfn {
79 size_t vbeIPv6_len; 79 size_t vbeIPv6_len;
80 u_long vbePort; 80 u_long vbePort;
81 81
82 struct VSC_point *vpt[VBE_MAX]; 82 const volatile uint64_t *vpt[VBE_MAX];
83 83
84 VTAILQ_ENTRY(backend_dfn) list; 84 VTAILQ_ENTRY(backend_dfn) list;
85}; 85};
@@ -92,9 +92,6 @@ backend_clear(void)
92{ 92{
93 while (!VTAILQ_EMPTY(&backends)) { 93 while (!VTAILQ_EMPTY(&backends)) {
94 struct backend_dfn *dfn = VTAILQ_FIRST(&backends); 94 struct backend_dfn *dfn = VTAILQ_FIRST(&backends);
95 int i;
96 for (i = 0; i < VBE_MAX; i++)
97 VSC_Destroy_Point(&dfn->vpt[i]);
98 VTAILQ_REMOVE(&backends, dfn, list); 95 VTAILQ_REMOVE(&backends, dfn, list);
99 free(dfn->vbeIdent); 96 free(dfn->vbeIdent);
100 SNMP_FREE(dfn); 97 SNMP_FREE(dfn);
@@ -127,7 +124,7 @@ backend_register(char const *name, size_t len, char const *param,
127 } 124 }
128 for (i = 0; betab_trans[i].param; i++) { 125 for (i = 0; betab_trans[i].param; i++) {
129 if (strcmp(betab_trans[i].param, param) == 0) { 126 if (strcmp(betab_trans[i].param, param) == 0) {
130 dfn->vpt[i] = VSC_Clone_Point(vpt); 127 dfn->vpt[i] = vpt->ptr;
131 break; 128 break;
132 } 129 }
133 } 130 }
@@ -162,7 +159,7 @@ backendTable_load(netsnmp_cache *cache, void *vmagic)
162 159
163 for (i = 0; i < VBE_MAX; i++) { 160 for (i = 0; i < VBE_MAX; i++) {
164 U64 *u = (U64*)((char*)ent + betab_trans[i].off); 161 U64 *u = (U64*)((char*)ent + betab_trans[i].off);
165 uint64_t n = *(const volatile uint64_t*)dfn->vpt[i]->ptr; 162 uint64_t n = *dfn->vpt[i];
166 u->high = n >> 32; 163 u->high = n >> 32;
167 u->low = n & 0xffffffff; 164 u->low = n & 0xffffffff;
168 } 165 }

Return to:

Send suggestions and report system problems to the System administrator.