📄 uip_arch.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 + -