⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uip_arch.i

📁 实现在指定视频服务器下的视频点播
💻 I
字号:
# 1 "uip_arch.c"
































 


# 1 "uip.h"



 










 


































 




# 1 "globals.h"








typedef unsigned long  int u32;
typedef unsigned short int u16;
typedef unsigned      char  u8;






                                    

                                    


                                        

                                    









extern _Bool STACK_BUSY;

extern u16 temp_cgi; 		

# 56 "uip.h"
# 1 "uipopt.h"









 










 

































 





 



 






 
typedef unsigned char u8_t;






 
typedef unsigned short u16_t;






 
typedef unsigned short uip_stats_t;

 

 













 









 













 


# 146 "uipopt.h"

# 159 "uipopt.h"

# 172 "uipopt.h"









 






								

 

								

 

								

 

								

 

								

 

 
 




 




 














 






 


 

 








 





 









 






 






 


 
 



 










 










 








 










 










 






 







 








 






 







  



 
 



 








 







 


 

 




 









 









 










 







 
void uip_log(char *msg);









 



 
 









 
# 493 "uipopt.h"








 




 
 































 







 






 
 



 




# 57 "uip.h"
# 1 "httpd.h"



 





 

































 




void httpd_init(void);
void httpd_appcall(void);



 




struct httpd_state {
  u8 state; 
  u16 count;
  char *dataptr;
  char *script;
};



 






extern struct httpd_state *hs;

# 58 "uip.h"
# 1 "uip_arp.h"



 




 
 




 
  

































 




# 1 "uip.h"



 










 


































 

# 1071 "uip.h"


 

# 56 "uip_arp.h"





 
struct uip_eth_addr {
  u8 addr[6];
};

extern struct uip_eth_addr uip_ethaddr;



 
struct uip_eth_hdr {
  struct uip_eth_addr dest;
  struct uip_eth_addr src;
  u16_t type;
};








 
void uip_arp_init(void);





 
void uip_arp_ipin(void);






 
void uip_arp_arpin(void);










 
void uip_arp_out(void);


 
void uip_arp_timer(void);

 




 








 










 











 










 



















 
# 193 "uip_arp.h"

 




 
extern const u16_t uip_arp_draddr[2], uip_arp_netmask[2];









# 59 "uip.h"


 



 







 











 














 



 






 






 
void uip_init(void);

 







 


















































 











































 














 



# 297 "uip.h"






















 
extern u8 uip_buf[1600+2];

 

 



 





 












 
void uip_listen(u16 port);












 
void uip_unlisten(u16 port);

































 
struct uip_conn *uip_connect(u16 *ripaddr, u16 port);











 


























 










 










 








 










 









 







 










 






 









 










 











 









 









 









 











 













  







 












 












 
struct uip_udp_conn *uip_udp_new(u16 *ripaddr, u16 rport);







 












 


 

 







 
 



















 













 
# 715 "uip.h"







 

u16 htons(u16 val);


 







 

extern volatile u8 *uip_appdata;

extern volatile unsigned int uip_appdata_length; 


extern volatile u8 *uip_sappdata; 







 
extern volatile u8 *uip_urgdata; 











 
extern volatile u16 uip_len, uip_slen;


extern volatile u8 uip_urglen, uip_surglen;












 
struct uip_conn {
  u16 ripaddr[2];    
  
  u16 lport;         
  u16 rport;        
   
  
  u8 rcv_nxt[4];    
 
  u8 snd_nxt[4];    
 
  u16 len;           
  u16 mss;          
 
  u16 initialmss;   
   
  u8 sa;            
 
  u8 sv;            
 
  u8 rto;            
  u8 tcpstateflags;  
  u8 timer;          
  u8 nrtx;          
 

   
  u8 appstate[(sizeof(struct httpd_state))];  
};


 
extern struct uip_conn *uip_conn;
 
extern struct uip_conn uip_conns[10];



 



 
extern volatile u8 uip_acc32[4];

 


# 842 "uip.h"





 
struct uip_stats {
  struct {
    uip_stats_t drop;     
 
    uip_stats_t recv;     
 
    uip_stats_t sent;     
 
    uip_stats_t vhlerr;   
 
    uip_stats_t hblenerr; 
 
    uip_stats_t lblenerr; 
 
    uip_stats_t fragerr;  
 
    uip_stats_t chkerr;   
 
    uip_stats_t protoerr; 
 
  } ip;                    
  struct {
    uip_stats_t drop;      
    uip_stats_t recv;      
    uip_stats_t sent;      
    uip_stats_t typeerr;  
 
  } icmp;                  
  struct {
    uip_stats_t drop;      
    uip_stats_t recv;      
    uip_stats_t sent;      
    uip_stats_t chkerr;   
 
    uip_stats_t ackerr;   
 
    uip_stats_t rst;       
    uip_stats_t rexmit;    
    uip_stats_t syndrop;  
 
    uip_stats_t synrst;   
 
  } tcp;                   
};





 
extern struct uip_stats uip_stat;


 


 
 





 
extern volatile u8 uip_flags;





 

# 945 "uip.h"








 
void uip_process(u8 flag);





 

# 971 "uip.h"

 
# 983 "uip.h"
  




 
typedef struct {
   
  u8 vhl,
    tos,          
    len[2],       
    ipid[2],        
    ipoffset[2],  
    ttl,          
    proto;     
  u16 ipchksum;
  u16 srcipaddr[2], 
    destipaddr[2];
  
   
  u16 srcport,
    destport;
  u8 seqno[4],  
    ackno[4],
    tcpoffset,
    flags,
    wnd[2];     
  u16 tcpchksum;
  u8 urgp[2];
  u8 optdata[4];
} uip_tcpip_hdr;

 
typedef struct {
   
  u8 vhl,
    tos,          
    len[2],       
    ipid[2],        
    ipoffset[2],  
    ttl,          
    proto;     
  u16 ipchksum;
  u16 srcipaddr[2], 
    destipaddr[2];
   
  u8 type, icode;
  u16 icmpchksum;
  u16 id, seqno;  
} uip_icmpip_hdr;


 
typedef struct {
   
  u8 vhl,
    tos,          
    len[2],       
    ipid[2],        
    ipoffset[2],  
    ttl,          
    proto;     
  u16 ipchksum;
  u16 srcipaddr[2], 
    destipaddr[2];
  
   
  u16 srcport,
    destport;
  u16 udplen;
  u16 udpchksum;
} uip_udpip_hdr;






extern const u16 uip_hostaddr[2];











 

# 37 "uip_arch.c"
# 1 "uip_arch.h"













 





 

































 























 
void uip_add32(u8_t *op32, u16_t op16);



















 
u16_t uip_chksum(u16_t *buf, u16_t len);









 
u16_t uip_ipchksum(void);













 
u16_t uip_tcpchksum(void);

 

# 38 "uip_arch.c"





 
void
uip_add32(u8_t *op32, u16_t op16)
{
  
  uip_acc32[3] = op32[3] + (op16 & 0xff);
  uip_acc32[2] = op32[2] + (op16 >> 8);
  uip_acc32[1] = op32[1];
  uip_acc32[0] = op32[0];
  
  if(uip_acc32[2] < (op16 >> 8)) {
    ++uip_acc32[1];    
    if(uip_acc32[1] == 0) {
      ++uip_acc32[0];
    }
  }
  
  
  if(uip_acc32[3] < (op16 & 0xff)) {
    ++uip_acc32[2];  
    if(uip_acc32[2] == 0) {
      ++uip_acc32[1];    
      if(uip_acc32[1] == 0) {
	++uip_acc32[0];
      }
    }
  }
}
 
u16_t
uip_chksum(u16_t *sdata, u16_t len)
{
  u16_t acc,store;
  
  for(acc = 0; len > 1; len -= 2) {
    acc +=*sdata; 			
    if(acc < *sdata) {
      
 
      ++acc;
    }
    ++sdata;
  }

   
  if(len == 1) {
    acc += htons(((u16_t)(*(u8_t *)sdata)) << 8);
    if(acc < htons(((u16_t)(*(u8_t *)sdata)) << 8)) {
      ++acc;
    }
  }

  return acc;
}
 
u16_t
uip_ipchksum(void)
{
  return uip_chksum((u16_t *)&uip_buf[14], 20);
}
 
u16_t
uip_tcpchksum(void)
{
  u16_t hsum, sum;

   
  hsum = uip_chksum((u16_t *)&uip_buf[20 + 14], 20);

  
 
  sum = uip_chksum((u16_t *)uip_appdata,
		   (u16_t)(((((u16_t)(((uip_tcpip_hdr *)&uip_buf[14])->len[0]) << 8) + ((uip_tcpip_hdr *)&uip_buf[14])->len[1]) - 40)));

  if((sum += hsum) < hsum) {
    ++sum;
  }
  
  if((sum += ((uip_tcpip_hdr *)&uip_buf[14])->srcipaddr[0]) < ((uip_tcpip_hdr *)&uip_buf[14])->srcipaddr[0]) {
    ++sum;
  }
  if((sum += ((uip_tcpip_hdr *)&uip_buf[14])->srcipaddr[1]) < ((uip_tcpip_hdr *)&uip_buf[14])->srcipaddr[1]) {
    ++sum;
  }
  if((sum += ((uip_tcpip_hdr *)&uip_buf[14])->destipaddr[0]) < ((uip_tcpip_hdr *)&uip_buf[14])->destipaddr[0]) {
    ++sum;
  }
  if((sum += ((uip_tcpip_hdr *)&uip_buf[14])->destipaddr[1]) < ((uip_tcpip_hdr *)&uip_buf[14])->destipaddr[1]) {
    ++sum;
  }
  if((sum += (u16_t)htons((u16_t)6)) < (u16_t)htons((u16_t)6)) {
    ++sum;
  }

  hsum = (u16_t)htons((((u16_t)(((uip_tcpip_hdr *)&uip_buf[14])->len[0]) << 8) + ((uip_tcpip_hdr *)&uip_buf[14])->len[1]) - 20);
  
  if((sum += hsum) < hsum) {
    ++sum;
  }
  
  return sum;
}
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -