📄 mylwip.c
字号:
#include "lwip/sys.h"
#include "lwip/tcpip.h"
#include "lwip/debug.h"
#include "lwip/opt.h"
#include "lwip/def.h"
#include "lwip/mem.h"
#include "lwip/memp.h"
#include "lwip/pbuf.h"
#include "lwip/api.h"
#include "lwip/stats.h"
#include "netif/etharp.h"
#include "netif/loopif.h"
#include "arch/ne2kif.h"
#include "arch/sys_arch.h"
#include "tcpecho.h"
#include "udpecho.h"
//#include "netbios.h"
#include <sal_os.h>
#include <ssi/trace.h>
#include "lwip/sockets.h"
#define LOCAL_IP 192,168,1,200
struct netif *rtl8019_netif;
//struct netif *rtl8019_netif_udp;
//struct netif *rtl8019_netif_tcp;
struct netif *loop_netif;
void telnet_thread(void *arg);
void
tcpip_init_done(void *arg)
{
sys_sem_t *sem;
sem = arg;
sys_sem_signal(*sem);
}
/*-----------------------------------------------------------------------------------*/
void
telnet_init(void)
{
sys_thread_new("telnet", telnet_thread, NULL, 4096, 1);
}
/*-----------------------------------------------------------------------------------*/
#if 0
int snd_sockfd = -1;
struct sockaddr_in des_addr;
void udp_test_init(void)
{
if ((snd_sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
{
func_trace(TRC_ERR, "init socket failed");
return;
}
des_addr.sin_family = AF_INET;
des_addr.sin_port = htons(9002);
des_addr.sin_addr.s_addr = inet_addr("192.168.1.3");
}
void udp_test_send(void)
{
char buf[] = {1, 2, 3, 4};
if (sendto(snd_sockfd, buf, 4, 0, (struct sockaddr*)&des_addr, sizeof(des_addr)) < 0)
{
func_trace(TRC_ERR, "udp send failed");
return;
}
}
#endif
void lwip_init_task(void * pParam)
{
struct ip_addr ipaddr, netmask, gw;
sys_sem_t sem;
#if 0
#if LWIP_STATS
stats_init();
#endif
sys_init();
mem_init();
memp_init();
pbuf_init();
netif_init();
#endif
sem = sys_sem_new(0);
tcpip_init(tcpip_init_done, &sem);
sys_sem_wait(sem);
sys_sem_free(sem);
//add loop interface
loop_netif = mem_malloc(sizeof(struct netif));
IP4_ADDR(&gw, 127,0,0,1);
IP4_ADDR(&ipaddr, 127,0,0,1);
IP4_ADDR(&netmask, 255,0,0,0);
netif_add(loop_netif, &ipaddr, &netmask, &gw, NULL, loopif_init, tcpip_input);
//add rtl8019 interface
rtl8019_netif = mem_malloc(sizeof(struct netif));
//rtl8019_netif_tcp = mem_malloc(sizeof(struct netif));
//rtl8019_netif_tcp = mem_malloc(sizeof(struct netif));
IP4_ADDR(&gw, 192,168,1,1);
IP4_ADDR(&ipaddr, 192,168,1,200);
IP4_ADDR(&netmask, 255,255,255,0);
//netif_add(rtl8019_netif, &ipaddr, &netmask, &gw, NULL, ethernetif_init, udp_input);
netif_set_default(netif_add(rtl8019_netif, &ipaddr, &netmask, &gw, NULL, ethernetif_init, tcpip_input));
netif_set_up(rtl8019_netif);
//netif_add(rtl8019_netif_udp, &ipaddr, &netmask, &gw, NULL, ethernetif_init, udp_input);
//netif_add(rtl8019_netif_tcp, &ipaddr, &netmask, &gw, NULL, ethernetif_init, tcpip_input);
//netif_set_up(rtl8019_netif_tcp);
//netif_set_up(rtl8019_netif_udp);
//netif_set_default(rtl8019_netif_tcp);
//netbios_init();
//sio_printf(" netbios inited!\n");
tcpecho_init();
func_trace(TRC_INFO4, "tcp sever created!");
telnet_init();
func_trace(TRC_INFO4, "telnet sever created!");
#if 0
//udpecho_init();
//sio_printf(" udp sever created!\n");
//udp_test_init();
/* Block for ever. */
sem = sys_sem_new(0);
sys_sem_wait(sem);
func_trace(TRC_ERR, "never goes here, should not appear!");
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -