Updated the Win32 port to work with current CVS HEAD (only NO_SYS=1 yet)

This commit is contained in:
goldsimon 2007-05-18 11:23:21 +00:00
parent ecff69c8da
commit 79ef1fb324
7 changed files with 187 additions and 43 deletions

View File

@ -42,7 +42,7 @@
struct http_state {
char *file;
u32_t left;
u16_t left;
u8_t retries;
};

View File

@ -37,9 +37,11 @@
struct sys_sem;
typedef struct sys_sem * sys_sem_t;
#define SYS_SEM_NULL NULL
struct sys_mbox;
typedef struct sys_mbox *sys_mbox_t;
#define SYS_MBOX_NULL NULL
struct sys_thread;
typedef struct sys_thread * sys_thread_t;

View File

@ -85,10 +85,38 @@ LIB32=link.exe -lib
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE="$(LWIP_SRC)\api\api_lib.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\api\api_msg.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\api\err.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\api\netifapi.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\api\sockets.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\api\tcpip.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\core\ipv4\icmp.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\core\ipv4\igmp.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\core\inet.c"
# End Source File
# Begin Source File
@ -105,6 +133,34 @@ SOURCE="$(LWIP_SRC)\core\ipv4\ip_frag.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\core\snmp\asn1_dec.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\core\snmp\asn1_enc.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\core\snmp\mib_structs.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\core\snmp\mib2.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\core\snmp\msg_in.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\core\snmp\msg_out.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\core\dhcp.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\core\mem.c"
# End Source File
# Begin Source File
@ -121,6 +177,10 @@ SOURCE="$(LWIP_SRC)\core\pbuf.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\core\raw.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\core\stats.c"
# End Source File
# Begin Source File
@ -149,6 +209,30 @@ SOURCE="$(LWIP_SRC)\core\udp.c"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE="$(LWIP_SRC)\include\ipv4\lwip\icmp.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\ipv4\lwip\igmp.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\ipv4\lwip\inet.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\ipv4\lwip\ip.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\ipv4\lwip\ip_addr.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\ipv4\lwip\ip_frag.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\lwip\api.h"
# End Source File
# Begin Source File
@ -169,30 +253,14 @@ SOURCE="$(LWIP_SRC)\include\lwip\def.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\lwip\dhcp.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\lwip\err.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\lwip\event.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\ipv4\lwip\icmp.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\ipv4\lwip\inet.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\ipv4\lwip\ip.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\ipv4\lwip\ip_addr.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\lwip\mem.h"
# End Source File
# Begin Source File
@ -205,6 +273,10 @@ SOURCE="$(LWIP_SRC)\include\lwip\netif.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\lwip\netifapi.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\lwip\opt.h"
# End Source File
# Begin Source File
@ -213,6 +285,30 @@ SOURCE="$(LWIP_SRC)\include\lwip\pbuf.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\lwip\raw.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\lwip\snmp.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\lwip\snmp_asn1.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\lwip\snmp_msg.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\lwip\snmp_structs.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\lwip\sockets.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\lwip\sys.h"
# End Source File
# Begin Source File
@ -227,6 +323,10 @@ SOURCE="$(LWIP_SRC)\include\lwip\tcpip.h"
SOURCE="$(LWIP_SRC)\include\lwip\udp.h"
# End Source File
# Begin Source File
SOURCE=.\lwipopts.h
# End Source File
# End Group
# End Target
# End Project

View File

@ -78,7 +78,7 @@ int cur_length;
unsigned char ethaddr[6];
/*-----------------------------------------------------------------------------------*/
int init_adapter(int adapter_num)
int init_adapter(int adapter_num, char* mac_addr)
{
#define Max_Num_Adapter 10
@ -89,8 +89,8 @@ int init_adapter(int adapter_num)
DWORD dwWindowsMajorVersion;
//unicode strings (winnt)
wchar_t AdapterName[8192]; // string that contains a list of the network adapters
wchar_t *temp,*temp1;
char AdapterName[8192]; // string that contains a list of the network adapters
char *temp,*temp1;
//ascii strings (win95)
char AdapterNamea[8192]; // string that contains a list of the network adapters
@ -105,6 +105,8 @@ int init_adapter(int adapter_num)
AdapterLength=4096;
memset(AdapterList,0,sizeof(AdapterList));
memset(AdapterName,0,sizeof(AdapterName));
memset(AdapterNamea,0,sizeof(AdapterNamea));
i=0;
@ -134,7 +136,7 @@ int init_adapter(int adapter_num)
AdapterNum=i;
for (i=0; i<AdapterNum; i++)
wprintf(L"%2i: %s\n", i, AdapterList[i]);
printf("%2i: %s\n", i, AdapterList[i]);
}
else //windows 95
@ -179,7 +181,8 @@ int init_adapter(int adapter_num)
return -1;
memcpy(&ethaddr,ppacket_oid_data->Data,6);
free(ppacket_oid_data);
printf("MAC: %2X%2X%2X%2X%2X%2X\n", ethaddr[0], ethaddr[1], ethaddr[2], ethaddr[3], ethaddr[4], ethaddr[5]);
memcpy(mac_addr, ethaddr, 6);
printf("MAC: %02X:%02X:%02X:%02X:%02X:%02X\n", ethaddr[0], ethaddr[1], ethaddr[2], ethaddr[3], ethaddr[4], ethaddr[5]);
PacketSetBuff(lpAdapter,512000);
PacketSetReadTimeout(lpAdapter,1);
PacketSetHwFilter(lpAdapter,NDIS_PACKET_TYPE_ALL_LOCAL);

View File

@ -89,6 +89,10 @@ SOURCE="$(LWIP_SRC)\netif\etharp.c"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\netif\loopif.c"
# End Source File
# Begin Source File
SOURCE=.\pktdrv.c
# End Source File
# Begin Source File
@ -103,6 +107,10 @@ SOURCE=.\pktif.c
SOURCE="$(LWIP_SRC)\include\netif\etharp.h"
# End Source File
# Begin Source File
SOURCE="$(LWIP_SRC)\include\netif\loopif.h"
# End Source File
# End Group
# End Target
# End Project

View File

@ -37,6 +37,8 @@
#include <string.h>
#include <conio.h>
#include "lwip/opt.h"
#include "lwip/debug.h"
#include "lwip/mem.h"
#include "lwip/memp.h"
@ -54,8 +56,11 @@
//#include "ftpd.h"
//#include "fs.h"
void ethernetif_init(struct netif *netif);
int init_adapter(int adapter_num);
/* index of the network adapter to use for lwIP */
#define PACKET_LIB_ADAPTER_NR 4
err_t ethernetif_init(struct netif *netif);
int init_adapter(int adapter_num, char *macaddr_out);
void shutdown_adapter(void);
void update_adapter(void);
@ -70,6 +75,7 @@ int dbg_printf(const char *fmt, ...)
return r;
}
#if LWIP_TCP
static err_t netio_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)
{
if (err == ERR_OK && p != NULL)
@ -108,26 +114,40 @@ void netio_init(void)
pcb = tcp_listen(pcb);
tcp_accept(pcb, netio_accept);
}
#endif /* LWIP_TCP */
struct netif netif;
void main_loop()
{
struct ip_addr ipaddr, netmask, gw;
#if NO_SYS
int last_time;
int timer1;
int timer2;
int done;
IP4_ADDR(&gw, 192,168,0,1);
IP4_ADDR(&ipaddr, 192,168,0,200);
IP4_ADDR(&netmask, 255,255,255,0);
if (init_adapter(0) != 0)
return;
#endif /* NO_SYS */
int done;
char mac_addr[6];
netif_set_default(netif_add(&netif, &ipaddr, &netmask, &gw, NULL, ethernetif_init,
ip_input));
IP4_ADDR(&gw, 192,168,1,1);
IP4_ADDR(&ipaddr, 192,168,1,200);
IP4_ADDR(&netmask, 255,255,255,0);
printf("Starting lwIP, local interface IP is %s\n", inet_ntoa(*(struct in_addr*)&ipaddr));
if (init_adapter(PACKET_LIB_ADAPTER_NR, mac_addr) != 0) {
printf("ERROR initializing network adapter %d!\n", PACKET_LIB_ADAPTER_NR);
return;
}
memcpy(&netif.hwaddr, mac_addr, 6);
/* increase the last octet so that lwIP netif has a similar but different MAC addr */
netif.hwaddr[5]++;
#if NO_SYS
netif_set_default(netif_add(&netif, &ipaddr, &netmask, &gw, NULL, ethernetif_init, ip_input));
#else /* NO_SYS */
netif_set_default(netif_add(&netif, &ipaddr, &netmask, &gw, NULL, ethernetif_init, tcpip_ethinput));
#endif /* NO_SYS */
netif_set_up(&netif);
/*
IP4_ADDR(&gw, 127,0,0,1);
@ -138,21 +158,28 @@ void main_loop()
ip_input);
*/
#if NO_SYS
tcp_init();
udp_init();
ip_init();
#else /* NO_SYS */
tcpip_init(0,0);
#endif /* NO_SYS */
httpd_init();
netio_init();
//ftpd_init();
#if NO_SYS
last_time=clock();
timer1=0;
timer2=0;
done=0;
#endif /* NO_SYS */
while (!done)
{
#if NO_SYS
int cur_time;
int time_diff;
@ -177,6 +204,7 @@ void main_loop()
timer2=0;
done=_kbhit();
}
#endif /* NO_SYS */
update_adapter();
}
@ -207,6 +235,9 @@ int main(void)
mem_init();
memp_init();
pbuf_init();
#if !NO_SYS
lwip_socket_init();
#endif /* !NO_SYS */
//tcpdump_init();

View File

@ -49,8 +49,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Packet.lib /nologo /subsystem:console /machine:I386
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib Packet.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "test - Win32 Debug"
@ -73,8 +73,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Packet.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib Packet.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF