static int network_initialization(void) { /* Initialize and start Contiki uIP stack */ clock_init(); rtimer_init(); ctimer_init(); process_init(); tcpip_set_outputfunc(net_tcpip_output); process_start(&tcpip_process, NULL); process_start(&simple_udp_process, NULL); process_start(&etimer_process, NULL); slip_start(); return 0; }
int main() { fd_set rfds, wfds, readfds, writefds; int n; struct buf stdinbuf, stdoutbuf; slipconn sc; sig_setup(); login(&sc); setuid(0); /* set real uid to 0 for some ifconfig's */ slip_start(&sc); FD_ZERO(&rfds); FD_SET(sc.masterfd, &rfds); FD_SET(0, &rfds); FD_ZERO(&wfds); while (go) { readfds = rfds; writefds = wfds; n = select(sc.masterfd+1, &readfds, &writefds, 0, 0); if (n > 0) { if (FD_ISSET(0, &readfds)) { bufread(&sc, 0, &stdinbuf); if (stdinbuf.len == 0) { /* eof on stdin */ slip_stop(&sc); exit(0); } if (stdinbuf.len) { FD_SET(sc.masterfd, &wfds); FD_CLR(0, &rfds); } } if (FD_ISSET(sc.masterfd, &readfds)) { bufread(&sc, sc.masterfd, &stdoutbuf); if (stdoutbuf.len) { FD_SET(1, &wfds); FD_CLR(sc.masterfd, &rfds); } } if (FD_ISSET(sc.masterfd, &writefds)) { bufwrite(&sc, sc.masterfd, &stdinbuf); if (stdinbuf.len == 0) { FD_SET(0, &rfds); FD_CLR(sc.masterfd, &wfds); } } if (FD_ISSET(1, &writefds)) { bufwrite(&sc, 1, &stdoutbuf); if (stdoutbuf.len == 0) { FD_SET(sc.masterfd, &rfds); FD_CLR(1, &wfds); } } } } slip_stop(&sc); return 0; }