#include #include #include #include #include #include #include "snmp.h" typedef struct encoded_value_t { int length; char *encoded; } encoded_value; Message__t * message_ptr; int main(int argcount, char *arglist[]) { int accepted = 0; int rejected = 0; int testno = 0; char testname[9]; decode_t d_scope; encode_t e_scope; size_t result; FILE *fd; char * transfer = "ber"; encoded_value enc; /* Initialize snmp */ initialize_snmp(); /* Load and decode messages */ while(1) { FILE *fd; struct stat st; sprintf(testname, "%08d", testno); if(!(fd = fopen(testname,"rb"))) { /* testfile does not exist - no more test files */ printf("\n%5d tests performed\n", testno); printf("%5d tests accepted (+)\n", accepted); printf("%5d tests rejected (-)\n", rejected); exit(EXIT_SUCCESS); } fstat(fileno(fd), &st); if(!(enc.encoded = malloc(st.st_size))) { fprintf(stderr, "Failed to allocate %lu byte(s) of memory\n", st.st_size); return 1; } /* Fill in the structure */ enc.length = st.st_size; fread(enc.encoded, enc.length, 1, fd); fclose(fd); /* Decode message */ message_ptr = DecExec(enc.encoded, enc.length, Message, transfer, &d_scope); if(message_ptr == NULL) { /* Error */ rejected++; printf("-"); } else { accepted++; printf("+"); } fflush(stdout); DecFree(d_scope); free(enc.encoded); testno++; } return 0; }