void odog_init() { initTcp(socketPort); pid = fork(); if (pid == 0) { system(cmd); exit(0); } connectTcp(); }
int SocketManager::init() { #if 0 if (-1 == initNetlink()) { exit(-1); } #endif if (-1 == initTcp()) { exit(-1); } return 0; }
int main(int argc, char **argv) { struct nfq_handle *nfqHandle; struct nfq_q_handle *myQueue; struct nfnl_handle *netlinkHandle; int fd, res; char buf[BUFF_SIZE]; if (argc!=4) { fprintf(stderr,"Error in number of arguments\n"); exit(-1); } // get the public IP address. And the public IP address is host byte order. publicIP = inet_network(argv[1]); if (publicIP == 0) { fprintf(stderr,"Error in public IP\n"); exit(-1); } fprintf(stdout,"publicIP: %u\n",publicIP); // get the subnet IP address. And the subnet IP address is host byte order. internalIP = inet_network(argv[2]); if (internalIP == 0) { fprintf(stderr,"Error in internal IP\n"); exit(-1); } fprintf(stdout,"internalIP: %u\n",internalIP); mask = mask << (32-atoi(argv[3])); subnetIP = internalIP & mask; fprintf(stdout,"subnetIP: %u\n",subnetIP); initUdp( &udpHead ); initTcp( &tcpHead ); if ( !(nfqHandle = nfq_open())) { fprintf(stderr, "Error in nfq_open()\n"); exit(-1); } if ( nfq_unbind_pf(nfqHandle, AF_INET) < 0 ) { fprintf(stderr, "Error in nfq_unbind_pf()\n"); exit(-1); } if ( nfq_bind_pf(nfqHandle, AF_INET) < 0) { fprintf(stderr, "Error in nfq_bind_pf()\n"); exit(-1); } if ( !(myQueue = nfq_create_queue(nfqHandle, 0, &Callback123, NULL)) ) { fprintf(stderr, "Error in nfq_create_queue()\n"); exit(1); } if ( nfq_set_mode(myQueue, NFQNL_COPY_PACKET, 0xffff) <0 ) { fprintf(stderr, "Could not set packet copy mode\n"); exit(1); } netlinkHandle = nfq_nfnlh(nfqHandle); fd = nfnl_fd(netlinkHandle); fprintf(stdout,"ready to receive packets\n"); //Start to process the packet we receive. while ( (res = recv(fd, buf , sizeof(buf), 0)) && res>=0 ) { printf("\n\n\n*******NEW ONE*******\n"); fprintf(stdout,"in the loop\n"); nfq_handle_packet(nfqHandle, buf , res); } //End the process nfq_destroy_queue(myQueue); nfq_close(nfqHandle); return 0; }