00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include <ubixos/types.h>
00031 #include <ubixos/sched.h>
00032 #include <ubixos/endtask.h>
00033
00034 #include <net/sys.h>
00035 #include <net/mem.h>
00036 #include <net/memp.h>
00037 #include <net/tcpip.h>
00038
00039 #include <netif/loopif.h>
00040 #include <netif/tcpdump.h>
00041 #include <netif/ethernetif.h>
00042
00043 #include <ubixos/exec.h>
00044 #include <lib/kmalloc.h>
00045 #include <lib/kprintf.h>
00046
00047 void netMainThread();
00048 static void tcpip_init_done(void *arg);
00049
00050 int net_init() {
00051 sys_init();
00052 mem_init();
00053 memp_init();
00054 pbuf_init();
00055
00056
00057
00058
00059
00060 sys_thread_new((void *)(netMainThread), 0x0);
00061
00062 return(0x0);
00063 }
00064
00065
00066 void netMainThread() {
00067 struct ip_addr ipaddr, netmask, gw;
00068 sys_sem_t sem;
00069
00070 netif_init();
00071 sem = sys_sem_new(0);
00072 tcpip_init(tcpip_init_done, &sem);
00073 sys_sem_wait(sem);
00074 sys_sem_free(sem);
00075
00076 kprintf("TCP/IP initialized.\n");
00077
00078 IP4_ADDR(&gw, 10,4,0,1);
00079 IP4_ADDR(&ipaddr, 10,4,0,69);
00080 IP4_ADDR(&netmask, 255,255,255,0);
00081 netif_set_default(netif_add(&ipaddr, &netmask, &gw, ethernetif_init, tcpip_input));
00082
00083 IP4_ADDR(&gw, 127,0,0,1);
00084 IP4_ADDR(&ipaddr, 127,0,0,1);
00085 IP4_ADDR(&netmask, 255,0,0,0);
00086 netif_add(&ipaddr, &netmask, &gw, loopif_init, tcpip_input);
00087
00088
00089 shell_init();
00090
00091 endTask(_current->id);
00092 }
00093
00094
00095 static void tcpip_init_done(void *arg) {
00096 sys_sem_t *sem = 0x0;
00097 sem = arg;
00098 sys_sem_signal(*sem);
00099 }
00100
00101
00102
00103
00104