static void sendqueries(isc_task_t *task, isc_event_t *event) { isc_result_t result; isc_event_free(&event); do { result = sendquery(task); } while (result == ISC_R_SUCCESS); if (onfly == 0) isc_app_shutdown(); return; }
int one_test(val_context_t *context, char *name, int class_h, int type_h, u_int32_t flags, int retvals[], int doprint) { int rc; struct val_response resp; memset(&resp, 0, sizeof(struct val_response)); rc = sendquery(context, "Result", name, class_h, type_h, flags, retvals, 1, &resp); fprintf(stderr, "\n"); // If the print option is present, perform query and validation // again for printing the result if (doprint) { print_val_response(&resp); } if (resp.vr_response) FREE(resp.vr_response); return rc; }
/*------------------------------------------------------------------------ * x_snmp - SNMP shell that does MIB object name completion *------------------------------------------------------------------------ */ int x_snmp(int stdin, int stdout, int stderr, int nargs, char *args[]) { int ch; char snmpservstr[BUFSIZE]; struct tty *ttyp; int ct, i, mode; IPaddr destmach; if (nargs != 2) { snusage(stdout); return OK; } args++; nargs--; sninit(); if ((destmach = name2ip(*args)) == (IPaddr)SYSERR) { fprintf(stdout,"snmp: couldn't resolve name %s\n", *args); return OK; } ip2dot(snmpservstr, destmach); sprintf(snmpservstr + strlen(snmpservstr), ":%d", SNMPPORT); ttyp = &ttytab[stdin]; ct = 0; mode = M_CHARIN; next_completion = num_completions = 0; control(stdin, TTC_MODER); /* put stdin into raw mode */ write(stdout, PROMPT, strlen(PROMPT)); /* print the prompt */ while (TRUE) { if ((ch = getc(stdin)) == EOF) { write(stdout, EXITSTR, strlen(EXITSTR)); putc(stdout, '\n'); control(stdin, TTC_MODEC); return OK; } if (ch == SYSERR) { return SYSERR; } if (ch == COMPLETE) { if (mode == M_CHARIN) { mode = M_COMPL; /* find beginning of word */ for (i=ct-1; i >= 0 && buf[i] != ' '; i--) /* empty */; s2clen = ct - ++i; strncpy(str2compl, buf + i, s2clen); find_completions(); } if (num_completions == 0) { putc(stdout, BELL); mode = M_CHARIN; } else print_completion(&ct, stdout); continue; } if (ch == KILLWORD && mode == M_COMPL) { /* kill word in compl. mode goes back to original string to complete. */ eraseword(&ct, stdout); strncpy(buf + ct, str2compl, s2clen); write(stdout, buf + ct, s2clen); ct += s2clen; mode = M_CHARIN; next_completion = num_completions = 0; continue; } if (mode == M_COMPL) { /* && ch != KILLWORD */ mode = M_CHARIN; str2compl[(s2clen = 0)] = '\0'; num_completions = next_completion = 0; } if (ch == KILLWORD) { /* && mode != M_COMPL */ eraseword(&ct, stdout); continue; } if ((ch == ttyp->tty_tchars.tc_kill)) { eraseall(ct, stdout); ct = 0; continue; } if ((ch == ttyp->tty_tchars.tc_erase)) { if (ct > 0) erase1(--ct, stdout); continue; } if ((ch == '\r') || (ch == '\n')) { echoch(ch, stdout); buf[ct] = '\0'; if (strequ(buf, EXITSTR)) { control(stdin, TTC_MODEC); return OK; } sendquery(stdout, snmpservstr); for (i = 0; i < BUFSIZE; i++) buf[i] = '\0'; write(stdout, PROMPT, strlen(PROMPT)); ct = 0; continue; } /* all non-special characters */ if (ct == BUFSIZE - 1) putc(stdout, BELL); else { echoch(ch, stdout); buf[ct++] = ch; } } return OK; }
// main entry int main(int argc,char **argv) { WNDCLASSEX wcex; HWND hwnd; MSG msg; int ret; /* { HINSTANCE ret; HANDLE h; WIN32_FIND_DATA fd; //CreateProcess h = FindFirstFile("E:\\WINDOWS\\system32\\gpedit.msc",&fd); if (h != INVALID_HANDLE_VALUE) { printf("found\n"); FindClose(h); } else { printf("not found\n"); } ret = ShellExecute(0,0,L"E:\\WINDOWS\\system32\\gpedit.msc",0,L"E:\\WINDOWS\\system32",SW_SHOWNORMAL); printf("exec %d\n",ret); return 0; } */ printf("Everything IPC test\n"); ZeroMemory(&wcex,sizeof(wcex)); wcex.cbSize = sizeof(wcex); if (!GetClassInfoEx(GetModuleHandle(0),TEXT("IPCTEST"),&wcex)) { ZeroMemory(&wcex,sizeof(wcex)); wcex.cbSize = sizeof(wcex); wcex.hInstance = GetModuleHandle(0); wcex.lpfnWndProc = window_proc; wcex.lpszClassName = TEXT("IPCTEST"); if (!RegisterClassEx(&wcex)) { printf("failed to register IPCTEST window class\n"); return 1; } } if (!(hwnd = CreateWindow( TEXT("IPCTEST"), TEXT(""), 0, 0,0,0,0, 0,0,GetModuleHandle(0),0))) { printf("failed to create IPCTEST window\n"); return 1; } /* if (!sendquery(hwnd,TEXT("New Text Document.txt"))) { return 1; } */ if (!sendquery(hwnd,TEXT("Everything"))) { return 1; } // message pump loop: WaitMessage(); // update windows while(PeekMessage(&msg,NULL,0,0,0)) { ret = (int)GetMessage(&msg,0,0,0); if (ret == -1) goto exit; if (!ret) goto exit; // let windows handle it. TranslateMessage(&msg); DispatchMessage(&msg); } goto loop; exit: getchar(); return 0; }
void main(){ int sockfd,newfd; struct sockaddr_in myaddress; struct sockaddr_in clientaddress; int sin_size; sockfd = createsocket(PF_INET,SOCK_DGRAM,0); create(&myaddress,MYPORT,IP); bindsocket(sockfd,&myaddress); //create tld data struct resource records[20]; int recordslen = 0; records[recordslen++] = createresource("dns.auth.com","127.0.0.20",Q_A,3000); records[recordslen++] = createresource("athena.com","dns.auth.com",Q_NS,3000); records[recordslen++] = createresource("www.athena.com","dns.auth.com",Q_NS,3000); records[recordslen++] = createresource("mail.athena.com","dns.auth.com",Q_NS,3000); records[recordslen++] = createresource("facebook.com","dns.auth.com",Q_NS,3000); records[recordslen++] = createresource("www.facebook.com","dns.auth.com",Q_NS,3000); records[recordslen++] = createresource("mail.facebook.com","dns.auth.com",Q_NS,3000); records[recordslen++] = createresource("google.com","dns.auth.com",Q_NS,3600); records[recordslen++] = createresource("www.google.com","dns.auth.com",Q_NS,3600); records[recordslen++] = createresource("mail.google.com","dns.auth.com",Q_NS,3600); records[recordslen++] = createresource("amazon.com","dns.auth.com",Q_NS,3000); records[recordslen++] = createresource("www.amazon.com","dns.auth.com",Q_NS,3000); records[recordslen++] = createresource("mail.amazon.com","dns.auth.com",Q_NS,3000); while(1){ printf("\n\nWaiting for query.\n\n"); struct msg m; recievequery(sockfd,&m,&clientaddress); if(m.msg_type==MSG_QUERY){ printf("Query for %s recieved.\n", m.queries[0].name); struct resource found[4]; int k = search(records,recordslen,found,m.queries[0].name); if(k>0){ if(found[0].type == Q_NS){ //find dns printf("NS Record found.\n"); struct resource dns[4]; int l = search(records,recordslen,dns,found[0].value); if(k>0){ m.answers[0] = found[0]; m.answers[1] = dns[0]; sendquery(sockfd,m,MSG_REPLY,0,2,clientaddress); }else{ //no A records found for dns. Shouldn't happen normally. printf("But No A Records found.\n"); sendquery(sockfd,m,MSG_ERROR,0,0,clientaddress); } }else{ //possibly the A records printf("A Records found.\n"); int i; for (i = 0; i < k; i++) { m.answers[i] = found[i]; } sendquery(sockfd,m,MSG_REPLY,0,0,clientaddress); } }else{ //no results printf("No Records found.\n"); sendquery(sockfd,m,MSG_ERROR,0,0,clientaddress); } }else{ //error. printf("Not a query.\n"); sendquery(sockfd,m,MSG_ERROR,0,0,clientaddress); } } }