Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
/*------------------------------------------------------------------------
 * 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;
}
Ejemplo n.º 4
0
// 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);
        }
    }

}