/* * Turn a tree into a list for easy of comparison */ arg_elem *expr_list_eval(arg_elem *head, tree_t *t) { if (t == NULL) return head; if (t->type == EXPR_LIST) { head = expr_list_eval(head, t->left); head = expr_list_eval(head, t->right); } else head = arg_append(head, type_check(t)); }
int trap_send_v3(TrapReceiver *tRcv, TrapList *tV3UserList, TrapData *tData) { #if 0 struct arg arg; TrapNode *tV3UserNode, *tParamNode; TrapParam *tParam; TrapV3User *tV3User; for (tV3UserNode = tV3UserList->first; tV3UserNode; tV3UserNode = tV3UserNode->next) { tV3User = tV3UserNode->data; arg_init(&arg, 100, 20); arg_append(&arg, "snmptrap"); arg_append(&arg, "-v"); arg_append(&arg, "3"); arg_append(&arg, "-u"); arg_append(&arg, tV3User->username); if (strlen(tV3User->auth_type) > 0 && strlen(tV3User->auth_passwd) > 0){ arg_append(&arg, "-a"); arg_append(&arg, tV3User->auth_type); arg_append(&arg, "-A"); arg_append(&arg, tV3User->auth_passwd); } if (strlen(tV3User->priv_type) > 0 && strlen(tV3User->priv_passwd) > 0){ arg_append(&arg, "-x"); arg_append(&arg, tV3User->priv_type); arg_append(&arg, "-X"); arg_append(&arg, tV3User->priv_passwd); } char addr[100]; snprintf(addr, sizeof(addr), "%s:%hd", tRcv->rcv_ip, 162); arg_append(&arg, addr); char tm[100]; snprintf(tm, sizeof(tm), "%ul", time(0)*100); arg_append(&arg, tm); arg_append(&arg, tData->oid); for (tParamNode = tData->paramList.first; tParamNode; tParamNode = tParamNode->next){ tParam = tParamNode->data; arg_append(&arg, tParam->oid); char buf[10]; sprintf(buf, "%c", tParam->type); arg_append(&arg, buf); arg_append(&arg, tParam->value); } trap_exec(arg.argc, arg.argv); arg_destroy(&arg); } #endif return 0; }