#define UIP_CONF_UDP_CHECKSUMS ÊÇ·ñÆôÓÃUDCУÑéºÍ. #define UIP_CONF_STATISTICS UIPÅäÖÃͳ¼ÆÊÇ·ñ¿ªÆô. typedef uint8_t u8_t 8λµÄÊý¾ÝÀàÐÍ. typedef uint16_t u16_t 16λµÄÊý¾ÝÀàÐÍ.
typedef unsigned short uip_stats_t ͳ¼ÆÊý¾ÝÀàÐÍ. ¸´ÖÆ´úÂë
¾²Ì¬ÅäÖÃÑ¡Ïî:
ÕâЩѡÏî¿ÉÒÔÓÃÀ´¾²Ì¬ÅäÖÃIPµØÖ·,Ìõ¼þÊÇUIP_FIXEDADDR±ØÐëÉèΪ1. Ö¸¶¨½ÚµãµÄÅäÖÃÑ¡Ïî°üÀ¨IPµØÖ·,×ÓÍøÑÚÂë,ĬÈÏ·Óɼ°ÒÔÌ«ÍøÖ·.¶øºóÈýÏîÖ»ÓÐÔÚÒÔÌ«ÍøÖÐʱ²Å¿ÉÓÃ. #define UIP_FIXEDADDR ¾ö¶¨uIPʹÓù̶¨IPÓë·ñ. #define UIP_PINGADDRCONF ÉèÖÃpingµØÖ·.
#define UIP_FIXEDETHADDR ARPÄ£¿éµÄ±àÒëÊÇ·ñÓù̶¨µÄMACµØÖ·. ¸´ÖÆ´úÂë
IPÅäÖÃÑ¡Ïî:
#define UIP_TTL 64 ¶¨ÒåUIP°üµÄÉú´æÊ±¼ä.TTL. #define UIP_REASSEMBLY ´ò¿ªIP°üÖØÐÂ×é×°¹¦ÄÜ.
#define UIP_REASS_MAXAGE 40 IPƬ¶ÏÈÓµô֮ǰÔÚÖØ×é×°»º³åÇøµÈ´ýµÄʱ¼ä. ¸´ÖÆ´úÂë
UDPÅäÖÃÑ¡Ïî:
#define UIP_UDP UDPÖ§³ÖÊÇ·ñ±àÒë
#define UIP_UDP_CHECKSUMS. ÊÇ·ñʹÓÃUDPУÑéºÍ. #define UIP_UDP_CONNS ×î´ó²¢·¢UDPÁ¬½ÓÊý. ¸´ÖÆ´úÂë
TCPÅäÖÃÑ¡Ïî:
#define UIP_ACTIVE_OPEN ¾ö¶¨UIPµÄ´ò¿ªÁ¬½ÓÖ§³ÖÊÇ·ñ±àÒë. #define UIP_CONNS ×î´óͬʱ´ò¿ªµÄTCPÁ¬½ÓÊý. #define UIP_LISTENPORTS ×î´óTCP¼àÌý¶Ë¿ÚÊý. #define UIP_URGDATA??ÊÇ·ñ±àÒëTCP½ôÆÈÊý¾ÝÌáÐÑ.
#define UIP_RTO 3 ³õÊ¼ÖØ´«³¬Ê±¼ÆÊý,ÒÔ¶¨Ê±Æ÷Âö³å¸öÊý¼Æ. #define UIP_MAXRTX 8 Ò»¶ÎÊý¾Ý×î´óÖØ´«¶àÉٴβÅÈ¡ÏûÁ¬½Ó.
#define UIP_MAXSYNRTX 5 Ò»¶ÎSYNÊý¾ÝÒª×î´óµÃ´«¶àÉÙ´Î,²ÅÈ϶¨Á¬½ÓÇëÇóʧ°Ü.
#define UIP_TCP_MSS (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) TCP×î´ó¶Î´óС #define UIP_RECEIVE_WINDOW ¹ã²¥½ÓÊÕÆ÷µÄ×î´ó´°¿Ú´óС.
#define UIP_TIME_WAIT_TIMEOUT 120 Ò»¸öÁ¬½Ó´¦ÓÚTIME_WAIT״̬µÄ×î´óʱ¼ä. ¸´ÖÆ´úÂë
ARPÅäÖÃÑ¡Ïî:
#define UIP_ARPTAB_SIZE ARP±í´óС.
#define UIP_ARP_MAXAGE 120 ARP±íµÄ×î´ó´æ»îÄêÁä,µ¥Î»Îª10s. ¸´ÖÆ´úÂë
ͨÓÃÅäÖÃÑ¡Ïî:
#define UIP_BUFSIZE UIP°ü»º³åÇø´óС. #define UIP_STATISTICS ÊÇ·ñ±àÒëͳ¼Æ¹¦ÄÜ.
#define UIP_LOGGING ijЩʼþµÄÈÕÖ¾¹¦ÄÜÊÇ·ñ±àÒë.
#define UIP_BROADCAST ¹ã²¥¹¦ÄÜÊÇ·ñÖ§³Ö. #define UIP_LLH_LEN Á´Â·²ãÍ·³¤¶È.
void uip_log (char *msg) ´òÓ¡UIPÈÕÖ¾ÐÅÏ¢. ¸´ÖÆ´úÂë
CPU¼Ü¹¹ÅäÖÃ:
ÕâÀïÖ¸¶¨µÄÊÇCPUµÄ´óС¶Ëģʽ.µ±½ñµÄCPU¶àʱС¶ËµÄ,È»¶ø×î×ÅÃûµÄÀýÍâ¾ÍÊÇmotorolaµÄCPU.ËüÊÇ´ó¶ËµÄ.Ó¦¸ù¾ÝCPUµÄ´óС¶Ëģʽ²»Í¬,ÅäÖà BYTE_ORDER. #define UIP_BYTE_ORDER UIPËùÔËÐеÄCPU´óС¶Ëģʽ. ¸´ÖÆ´úÂë
Õë¶ÔÓ¦ÓõÄÅäÖÃ:
UIPÓ¦ÓÃÊÇʹÓõ¥¸öÓ¦Óú¯ÊýÊýʵÏÖµÄ.Ö»ÒªTCP/IPʼþ·¢Éú,uIP¾Í»áµ÷ÓÃÕâ¸öº¯Êý.Õâ¸öº¯ÊýµÄÃû×Ö±ØÐëÔÚ±àÒëʱʹÓÃUIP_APPCALL×¢²áµ½uIP.
uIPÓ¦ÓÿÉÒÔÔÚuip_conn½á¹¹Öб£´æÓ¦ÓÃ״̬.ÕâÊÇͨ¹ýÀûÓÃtypedef uip_tcp_appstate_tºÍ
uip_udp_appstate_tÖ¸¶¨Ó¦ÓõÄÀàÐÍʵÏÖµÄ.°üº¬´Ë¶¨ÒåµÄÎļþ±ØÐë±»°üº¬ÔÚÎļþÖÐ. ÏÂÃæÊÇÒ»¸öÀý×Ó:
void httpd_appcall(void);
#define UIP_APPCALL? ???httpd_appcall
struct httpd_state { ??u8_t state; ??u16_t count; ??char *dataptr; ??char *script; };
typedef struct httpd_state uip_tcp_appstate_t ¸´ÖÆ´úÂë
#define UIP_APPCALL smtp_appcall??TCP/IPʼþµÄÓ¦´ðº¯ÊýÃû³Æ.
typedef smtp_state uip_tcp_appstate_t ´æ´¢ÔÚuip_connÖеÄÓ¦ÓÃ״̬ÀàÐÍ. typedef int uip_udp_appstate_t ´æ´¢ÔÚuip_connÖеÄÓ¦ÓÃ״̬ÀàÐÍ #define UIP_LITTLE_ENDIAN 3412 #define UIP_BIG_ENDIAN 1234 ¸´ÖÆ´úÂë
1. #define UIP_ACTIVE_OPEN
¾ö¶¨ÊÇ·ñÖ§³ÖÔÚuipÖдò¿ªÁ¬½Ó.
Èç¹û´Ë¹¤³ÌÖй¤×÷ÓÚuipÉϲãµÄÓ¦Óò»ÐèÒª´ò¿ªTCPÁ¬½Ó,¿ÉÒԹرմËÏîÒÔ¼õС±àÒëºóµÄ´úÂë´óС. ¶¨ÒåÓÚÖеÄ233ÐÐ.
2. 2. #define UIP_ARP_MAXAGE 120
ÒÔ10sΪµ¥Î»µÄARP±íÏîµÄ×î´óÄêÁä. 120´ú±íµÄÊÇ20·ÖÖÓ(BSDÖеÄĬÈÏÖµ). ¶¨ÒåÓÚÖеÄ358ÐÐ.
ÒýÓÃÓÚuip_arp_timer(). 3. 3. #define UIP_ARPTAB_SIZE
1. #define UIP_ACTIVE_OPEN ¾ö¶¨ÊÇ·ñÖ§³ÖÔÚuipÖдò¿ªÁ¬½Ó.
Èç¹û´Ë¹¤³ÌÖй¤×÷ÓÚuipÉϲãµÄÓ¦Óò»ÐèÒª´ò¿ªTCPÁ¬½Ó,¿ÉÒԹرմËÏîÒÔ¼õС±àÒëºóµÄ´úÂë´óС. ¶¨ÒåÓÚÖеÄ233ÐÐ.
2. #define UIP_ARP_MAXAGE 120 ÒÔ10sΪµ¥Î»µÄARP±íÏîµÄ×î´óÄêÁä. 120´ú±íµÄÊÇ20·ÖÖÓ(BSDÖеÄĬÈÏÖµ). ¶¨ÒåÓÚÖеÄ358ÐÐ. ÒýÓÃÓÚuip_arp_timer().
3. #define UIP_ARPTAB_SIZE ARP±íµÄ´óС.
Èç¹ûuip½Úµã¿ÉÄÜÔÚ±¾µØÍøÂçÖÐÓкܶàÁ¬½Ó,Ôò´ËÖµÓ¦ÉèµÃ´óЩ. ¶¨ÒåÓÚÖеÄ349ÐÐ.
ÒýÓÃÓÚuip_arp_init(), uip_arp_out(), anduip_arp_timer().
4. #define UIP_BROADCAST Ö§³Ö¹ã²¥.
´Ë±êÖ¾ÓÃÓÚÅäÖù㲥µÄÖ§³Ö,½öÔÚ¿ªÆôUDPʱ²ÅÓÐÒâÒå. ¶¨ÒåÓÚÖеÄ423ÐÐ.
5. #define UIP_BUFSIZE uip°ü»º³åÇø´óС.
²»¾ÍСÓÚ60×Ö½Ú,²»Ðë´óÓÚ1500×Ö½Ú.Õâ¸öֵԽС,TCPµÄÍÌÍÂÁ¿¾ÍԽС,Ïà·´Ô½´ó. ¶¨ÒåÓÚÖеÄ379ÐÐ.
ÒýÓÃÓÚuip_split_output().
6. #define UIP_BYTE_ORDERuipÔËÐеÄCPU¹¹¼ÜµÄ×Ö½Ú˳Ðò,¿Éѡֵ½öÓÐÁ½¸ö,·Ö±ðΪBIG_ENDIANºÍ LITTLE_ENDIAN. Ó¦ÓÃÈ«³Ì:, and . ¶¨ÒåÓÚÖеÄ475ÐÐ.
7. #define UIP_CONNS ¿Éͬʱ´ò¿ªµÄ×î´óTCPÁ¬½ÓÊý.
ÓÉTCPÁ¬½ÓÊǾ²Ì¬¿ª±ÙµÄ,ËùÒÔ¼õС´ËÑ¡ÏîµÄÖµ¿ÉÒÔ¼õСRAMÕ¼ÓÃÁ¿,ÿ¸öTCPÁ¬½ÓÐèÒª´óÔ¼30×Ö½ÚµÄRAM. ¶¨ÒåÓÚÖеÄ245ÐÐ. ÒýÓÃÓÚuip_connect().
8. #define UIP_FIXEDADDR ¾ö¶¨uIPÊÇ·ñʹÓù̶¨IPµØÖ·. Èç¹ûʹÓù̶¨IPµØÖ·,Ôò´ËµØÖ·¿ÉÒÔÔÚ
ÖÐÖ¸¶¨.·ñÔò,Èç¹ûÏëÓö¯Ì¬µÄIPµØÖ·,Ôò¿ÉÒÔʹÓÃuip_sethostaddr(), uip_setdraddr() and uip_setnetmask() Èý¸öºê¶¯Ì¬Ö¸¶¨. ¶¨ÒåÓÚÖеÄ97ÐÐ.
9. #define UIP_FIXEDETHADDR ¾ö¶¨uIPÊÇ·ñʹÓù̶¨µÄMACµØÖ·.
Èô²»Ê¹Óù̶¨µÄMACµØÖ·,Ôò¿ÉÓÃuip_setethaddr()ÔÚÔËÐÐʱ¶¯Ì¬Ö¸¶¨. ¶¨ÒåÓÚÖеÄ127ÐÐ.
10. #define UIP_LISTENPORTS
¿ÉÒÔͬʱ¼àÌýµÄ×î´ó¶Ë¿ÚÊý.ÿ¼àÌýÒ»¸öTCP¶Ë¿ÚÐèÒªÁ½×Ö½ÚÄÚ´æ. ¶¨ÒåÓÚÖеÄ259ÐÐ. ÒýÓÃÓÚ
uip_init(), uip_listen(), and uip_unlisten().
11. #define UIP_LLH_LEN Á´Â·²ãÍ·µÄ³¤¶È.
Õâ¸öIPÍ·ÔÚuip_bufÖеıàÒÆÁ¿.¶ÔÓÚÒÔÌ«ÍøÀ´Ëµ,´ËֵΪ14.¶ÔÓÚSLIPÀ´Ëµ,ÆäÖµ0 . ¶¨ÒåÓÚÖеÄ448ÐÐ.
ÒýÓÃÓÚuip_ipchksum(), uip_process(), and uip_split_output().
12. #define UIP_LOGGING ¶¨ÒåÊÇ·ñ±àÒëʼþÈÕÖ¾.
Õâ¶ÔÓÚµ÷ÊÔÊǷdz£ÓаïÖúµÄ.Èç¹û´ò¿ª´ËÏî,»ò±ØÐëÔÚ¹¤³ÌµÄ¹¹¼ÜÉÏʵÏÖuip_log(). ¶¨ÒåÓÚÖеÄ408ÐÐ.
13. #define UIP_MAXRTX 8
ÔÚ×î¶à¶àÉÙ´ÎÖØÐ·¢ËÍͬһ¶ÎÊý¾ÝÖ®ºó,¾ÍµÃÈ¡ÏûÁ¬½Ó. ´ËÏî²»Ó¦¸Ä±ä. ¶¨ÒåÓÚÖеÄ288ÐÐ. ÒýÓÃÓÚuip_process().
14. #define UIP_MAXSYNRTX 5
Ò»¸öSYNÊý¾Ý×î¶à¿ÉÒÔÖØ´«¶àÉÙ´Î,Ö®ºó¾ÍµÃÈÏΪÁ¬½ÓÇëÇóʧ°Ü. ´ËÏîÒ಻Ӧ¸Ä±ä. ¶¨ÒåÓÚÖеÄ297ÐÐ. ÒýÓÃÓÚuip_process().
15. #define UIP_PINGADDRCONF É趨ping IPµØÖ·.
Èç¹ûÉ趨´ËÏî,ÔòuipʹÓÃping°üÀ´É趨ÆäIPµØÖ·.´ËʱuipÆôÓÃʱ»áÖ»ÓÐÒ»¸ö¿ÕµÄIpµØÖ·,¶ø°ÑÊÕµ½µÄµÚÒ»¸öping°üÉèΪ×Ô¼ºµÄµØÖ·. ×¢Òâ:
´ËÏîÖ»ÓÐÔÚUIP_FIXEDADDRÉèΪ0ʱ²Å¿ÉÓÃ. ¶¨ÒåÓÚÖеÄ114ÐÐ.
16. #define UIP_REASSEMBLY´ò¿ªIP°üÖØ×é.
uipÖ§³ÖË鯬IP°üµÄÖØ×é.´ËÏîÌØÐÔÐèÒª¶àÓàµÄRAMÀ´Ê¢·ÅÖØ×黺³åÇø.ÖØ×é´úÂë´óСԼΪ700×Ö½Ú.ÖØ×黺³åÇøµÄ´óСÓëuip_bufµÄ´óС(ÓÉUIP_BUFSIZEÅäÖÃ)Ïàͬ. ×¢Òâ:
IP°üÖØ×鲢δ¾¹ýÑϸñ²âÊÔ. ¶¨ÒåÓÚµÄ156ÐÐ.
17. #define UIP_RECEIVE_WINDOW ͨ¸æµÄ½ÓÊÕÆ÷´°¿Ú.
Èç¹û´¦ÀíÆ÷¶ÔÊäÈëÊý¾Ý´¦ÀíÄÜÁ¦½ÏÂý,ÔòÓ¦ÉèµÃµÍЩ(uip_bufµÄ´óС),·ñÔòÓ¦ÉèµÃ¸ßЩ(32768×Ö½Ú). ¶¨ÒåÓÚµÄ317ÐÐ.
18. #define UIP_RTO 3 ÒÔʱÖÓÂö³å¼ÆËãµÄÖØ´«³¬Ê±¼ÆÊý. ´ËÏî²»Ó¦¸Ä±ä. ¶¨ÒåÓÚµÄ280ÐÐ. ÒýÓÃÓÚuip_process().
Ïà¹ØÍÆ¼ö£º