亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tcp.h

?? 基于DM642的網(wǎng)絡(luò)傳輸
?? H
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
	    err_t (* recv)(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err);
	
	    /* Function to be called when a connection has been set up. */
	    err_t (* connected)(void *arg, struct tcp_pcb *pcb, err_t err);
	
	    /* Function to call when a listener has been connected. */
	    err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err);
	
	    /* Function which is called periodically. */
	    err_t (* poll)(void *arg, struct tcp_pcb *pcb);
	
	    /* Function to be called whenever a fatal error occurs. */
	    void (* errf)(void *arg, err_t err);
//	    #endif /* LWIP_CALLBACK_API */
	
	    /* idle time before KEEPALIVE is sent */
	    u32_t keepalive;
	  
	    /* KEEPALIVE counter */
	    u8_t keep_cnt;
};

struct tcp_pcb_listen 
{  
     /* Protocol specific PCB members */
     struct tcp_pcb_listen *next;   /* for the linked list */
     /* Even if state is obviously LISTEN this is here for
      * field compatibility with tpc_pcb to which it is cast sometimes
      * Until a cleaner solution emerges this is here.FIXME
      */ 
      enum tcp_state state;   /* TCP state */

      u8_t prio;
      void *callback_arg;
      Uint32 local_ip;
      u16_t local_port; 

      #if LWIP_CALLBACK_API
      /* Function to call when a listener has been connected. */
      err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err);
      #endif /* LWIP_CALLBACK_API */
};

#if LWIP_EVENT_API

enum lwip_event 
{
     LWIP_EVENT_ACCEPT,
     LWIP_EVENT_SENT,
     LWIP_EVENT_RECV,
     LWIP_EVENT_CONNECTED,
     LWIP_EVENT_POLL,
     LWIP_EVENT_ERR
};

err_t lwip_tcp_event(void   *arg, 
                     struct tcp_pcb *pcb,
                     enum   lwip_event,
                     struct pbuf *p,
                     u16_t  size,
                     err_t  err
                     );

#define TCP_EVENT_ACCEPT(pcb,err,ret)    ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\
                LWIP_EVENT_ACCEPT, NULL, 0, err)
#define TCP_EVENT_SENT(pcb,space,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\
                   LWIP_EVENT_SENT, NULL, space, ERR_OK)
#define TCP_EVENT_RECV(pcb,p,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\
                LWIP_EVENT_RECV, (p), 0, (err))
#define TCP_EVENT_CONNECTED(pcb,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\
                LWIP_EVENT_CONNECTED, NULL, 0, (err))
#define TCP_EVENT_POLL(pcb,ret)       ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\
                LWIP_EVENT_POLL, NULL, 0, ERR_OK)
#define TCP_EVENT_ERR(errf,arg,err)  lwip_tcp_event((arg), NULL, \
                LWIP_EVENT_ERR, NULL, 0, (err))
#else /* LWIP_EVENT_API */
#define TCP_EVENT_ACCEPT(pcb,err,ret)     \
                        if((pcb)->accept != NULL) \
                        (ret = (pcb)->accept((pcb)->callback_arg,(pcb),(err)))
#define TCP_EVENT_SENT(pcb,space,ret) \
                        if((pcb)->sent != NULL) \
                        (ret = (pcb)->sent((pcb)->callback_arg,(pcb),(space)))
#define TCP_EVENT_RECV(pcb,p,err,ret) \
                        if((pcb)->recv != NULL) \
                        { ret = (pcb)->recv((pcb)->callback_arg,(pcb),(p),(err)); } else { \
            pbuf_free(p); }
#define TCP_EVENT_CONNECTED(pcb,err,ret) \
                        if((pcb)->connected != NULL) \
                        (ret = (pcb)->connected((pcb)->callback_arg,(pcb),(err)))
#define TCP_EVENT_POLL(pcb,ret) \
                        if((pcb)->poll != NULL) \
                        (ret = (pcb)->poll((pcb)->callback_arg,(pcb)))
#define TCP_EVENT_ERR(errf,arg,err) \
                        if((errf) != NULL) \
                        (errf)((arg),(err))
#endif /* LWIP_EVENT_API */

/* This structure is used to repressent TCP segments when queued. */
struct tcp_seg 
{
     struct tcp_seg *next;    /* used when putting segements on a queue */
     struct pbuf *p;          /* buffer containing data + TCP header */
     void   *dataptr;           /* pointer to the TCP data in the pbuf */
     u16_t  len;               /* the TCP length of this segment */
     struct tcp_hdr *tcphdr;  /* the TCP header */
};

/* Internal functions and global variables: */
struct tcp_pcb *tcp_pcb_copy(struct tcp_pcb *pcb);
void   tcp_pcb_purge(struct tcp_pcb *pcb);
void   tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb);

u8_t   tcp_segs_free(struct tcp_seg *seg);
u8_t   tcp_seg_free(struct tcp_seg *seg);
struct tcp_seg *tcp_seg_copy(struct tcp_seg *seg);

#define tcp_ack(pcb)     if((pcb)->flags & TF_ACK_DELAY) { \
                            (pcb)->flags &= ~TF_ACK_DELAY; \
                            (pcb)->flags |= TF_ACK_NOW; \
                            tcp_output(pcb); \
                         } else { \
                            (pcb)->flags |= TF_ACK_DELAY; \
                         }
#define tcp_ack_now(pcb) (pcb)->flags |= TF_ACK_NOW;          \
                         tcp_output(pcb)

err_t   tcp_send_ctrl(struct tcp_pcb *pcb, u8_t flags);
err_t   tcp_enqueue(struct tcp_pcb *pcb, void *dataptr, u16_t len,
                    u8_t flags,    u8_t copy,
                    u8_t *optdata, u8_t optlen);

void  tcp_rexmit_seg(struct tcp_pcb *pcb, struct tcp_seg *seg);

void  tcp_rst(u32_t seqno, u32_t ackno,Uint32 local_ip, Uint32 remote_ip,u16_t local_port, u16_t remote_port);

u32_t tcp_next_iss(void);

void  tcp_keepalive(struct tcp_pcb *pcb);

extern struct tcp_pcb *tcp_input_pcb;
extern u32_t tcp_ticks;

#if TCP_DEBUG || TCP_INPUT_DEBUG || TCP_OUTPUT_DEBUG
void tcp_debug_print(struct tcp_hdr *tcphdr);
void tcp_debug_print_flags(u8_t flags);
void tcp_debug_print_state(enum tcp_state s);
void tcp_debug_print_pcbs(void);
int tcp_pcbs_sane(void);
#else
#  define tcp_debug_print(tcphdr)
#  define tcp_debug_print_flags(flags)
#  define tcp_debug_print_state(s)
#  define tcp_debug_print_pcbs()
#  define tcp_pcbs_sane() 1
#endif /* TCP_DEBUG */

#if NO_SYS
#define tcp_timer_needed()
#else
void tcp_timer_needed(void);
#endif

/* The TCP PCB lists. */
union tcp_listen_pcbs_t 
{   /* List of all TCP PCBs in LISTEN state. */
	struct tcp_pcb_listen *listen_pcbs; 
	struct tcp_pcb *pcbs;
};
extern union tcp_listen_pcbs_t tcp_listen_pcbs;
extern struct tcp_pcb *tcp_active_pcbs;  /* List of all TCP PCBs that are in a
                                            state in which they accept or send
                                            data. */
extern struct tcp_pcb *tcp_tw_pcbs;      /* List of all TCP PCBs in TIME-WAIT. */

extern struct tcp_pcb *tcp_tmp_pcb;      /* Only used for temporary storage. */

/* Axioms about the above lists:   
   1) Every TCP PCB that is not CLOSED is in one of the lists.
   2) A PCB is only in one of the lists.
   3) All PCBs in the tcp_listen_pcbs list is in LISTEN state.
   4) All PCBs in the tcp_tw_pcbs list is in TIME-WAIT state.
*/

/* Define two macros, TCP_REG and TCP_RMV that registers a TCP PCB
   with a PCB list or removes a PCB from a list, respectively. */
#if 0
#define TCP_REG(pcbs, npcb) do {\
//                            LWIP_DEBUGF(TCP_DEBUG, ("TCP_REG %p local port %d\n", npcb, npcb->local_port)); \
                            for(tcp_tmp_pcb = *pcbs; \
          tcp_tmp_pcb != NULL; \
        tcp_tmp_pcb = tcp_tmp_pcb->next) { \
//                                LWIP_ASSERT("TCP_REG: already registered\n", tcp_tmp_pcb != npcb); \
                            } \
//                            LWIP_ASSERT("TCP_REG: pcb->state != CLOSED", npcb->state != CLOSED); \
                            npcb->next = *pcbs; \
//                            LWIP_ASSERT("TCP_REG: npcb->next != npcb", npcb->next != npcb); \
                            *(pcbs) = npcb; \
 //                           LWIP_ASSERT("TCP_RMV: tcp_pcbs sane", tcp_pcbs_sane()); \
              tcp_timer_needed(); \
                            } while(0)
#define TCP_RMV(pcbs, npcb) do { \
//                            LWIP_ASSERT("TCP_RMV: pcbs != NULL", *pcbs != NULL); \
//                            LWIP_DEBUGF(TCP_DEBUG, ("TCP_RMV: removing %p from %p\n", npcb, *pcbs)); \
                            if(*pcbs == npcb) { \
                               *pcbs = (*pcbs)->next; \
                            } else for(tcp_tmp_pcb = *pcbs; tcp_tmp_pcb != NULL; tcp_tmp_pcb = tcp_tmp_pcb->next) { \
                               if(tcp_tmp_pcb->next != NULL && tcp_tmp_pcb->next == npcb) { \
                                  tcp_tmp_pcb->next = npcb->next; \
                                  break; \
                               } \
                            } \
                            npcb->next = NULL; \
//                            LWIP_ASSERT("TCP_RMV: tcp_pcbs sane", tcp_pcbs_sane()); \
//                            LWIP_DEBUGF(TCP_DEBUG, ("TCP_RMV: removed %p from %p\n", npcb, *pcbs)); \
                            } while(0)

#else /* LWIP_DEBUG */
#define TCP_REG(pcbs, npcb) do { \
                            npcb->next = *pcbs; \
                            *(pcbs) = npcb; \
                             tcp_timer_needed(); \
                            } while(0)
#define TCP_RMV(pcbs, npcb) do { \
                            if(*(pcbs) == npcb) { \
                               (*(pcbs)) = (*pcbs)->next; \
                            } else for(tcp_tmp_pcb = *pcbs; tcp_tmp_pcb != NULL; tcp_tmp_pcb = tcp_tmp_pcb->next) { \
                               if(tcp_tmp_pcb->next != NULL && tcp_tmp_pcb->next == npcb) { \
                                  tcp_tmp_pcb->next = npcb->next; \
                                  break; \
                               } \
                            } \
                            npcb->next = NULL; \
                            } while(0)
#endif /*0*/
#endif /* __LWIP_TCP_H__ */



?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本在线看| 久久精品国产999大香线蕉| 日韩av在线播放中文字幕| 在线播放/欧美激情| 国产视频一区不卡| 一区二区三区四区不卡视频| 日本一道高清亚洲日美韩| 国内精品自线一区二区三区视频| aaa欧美日韩| 国产欧美精品一区二区三区四区| 精品一区二区三区在线播放视频| 欧美日韩在线播放一区| 日本中文字幕一区二区视频| 欧美视频三区在线播放| 蜜臀av国产精品久久久久 | 国产色一区二区| 在线观看亚洲一区| 国产在线播放一区| 欧美一区二区美女| 国产美女视频91| 国产精品福利在线播放| 欧美伊人久久久久久久久影院| 亚洲成人精品一区二区| 久久精品一级爱片| 777奇米成人网| 成人午夜精品在线| 奇米精品一区二区三区在线观看一 | 亚洲欧洲日本在线| 91精品国产综合久久国产大片| 韩国av一区二区| 日韩精品高清不卡| 午夜精品爽啪视频| 日韩av中文在线观看| 日韩一区二区在线免费观看| 久久国产尿小便嘘嘘| 伊人性伊人情综合网| 欧美色精品天天在线观看视频| 国产揄拍国内精品对白| 午夜久久电影网| 国产精品女同互慰在线看| 国产婷婷色一区二区三区| 久久久久97国产精华液好用吗| 日韩一区二区在线观看视频播放| 337p亚洲精品色噜噜| www日韩大片| 国产精品网曝门| 欧美性三三影院| 日本韩国一区二区三区视频| 成人一区在线观看| 91九色02白丝porn| 欧美日韩精品一区视频| 欧美精品tushy高清| 欧美日韩视频一区二区| 欧美美女视频在线观看| 欧美成人综合网站| 国产精品区一区二区三区| 综合久久给合久久狠狠狠97色| 国产最新精品免费| 欧美一区三区四区| 亚洲18影院在线观看| 欧美自拍丝袜亚洲| 亚洲欧洲www| 成人毛片老司机大片| 3atv一区二区三区| 天天色综合天天| 欧美日韩国产在线播放网站| 欧美日本在线视频| 久久精品视频免费观看| 午夜精品久久久久久久99水蜜桃 | 3d动漫精品啪啪一区二区竹菊| 欧美成人艳星乳罩| 亚洲一区在线看| 精品一区二区三区在线视频| 成人午夜伦理影院| 韩国精品一区二区| 日韩视频国产视频| 久久激情综合网| 欧美二区三区91| 精品国产凹凸成av人网站| 亚洲裸体xxx| 国产精品一二三四区| 欧美日韩高清不卡| 国产精品丝袜黑色高跟| 日本在线不卡一区| 色婷婷av一区二区三区gif| 精品国产91乱码一区二区三区 | 欧美96一区二区免费视频| 99在线热播精品免费| 久久亚洲精精品中文字幕早川悠里| 亚洲风情在线资源站| 91网站黄www| 国产精品毛片大码女人| 狠狠色狠狠色合久久伊人| 日韩一区二区三| 午夜久久久久久久久久一区二区| 91亚洲国产成人精品一区二区三| 久久毛片高清国产| 国产麻豆成人传媒免费观看| 日韩精品专区在线| 国产一区二区在线视频| 欧美zozozo| 国产成人小视频| 中文字幕不卡在线播放| 不卡视频在线看| 亚洲色图视频网站| 欧美亚男人的天堂| 国产精品高潮呻吟久久| av午夜精品一区二区三区| 一区二区三区精品久久久| 欧美综合亚洲图片综合区| 亚洲欧美另类小说| 日韩欧美成人一区| 久久99精品久久久久久国产越南 | 成a人片亚洲日本久久| 亚洲女性喷水在线观看一区| 欧美在线一二三四区| 日韩av电影免费观看高清完整版 | 丰满岳乱妇一区二区三区| 国产精品成人网| 欧美日韩精品欧美日韩精品一| 美日韩一区二区三区| 欧美国产精品专区| 欧美一区二区三区四区在线观看| 五月婷婷另类国产| 国产亚洲一区二区在线观看| 日本二三区不卡| 香蕉久久夜色精品国产使用方法| 在线看日本不卡| 亚洲成人免费av| 精品国一区二区三区| 亚洲自拍偷拍网站| 欧美一区午夜视频在线观看| 紧缚捆绑精品一区二区| 久久天堂av综合合色蜜桃网| 色哟哟在线观看一区二区三区| 欧美三区在线观看| 亚洲欧美自拍偷拍| 国产美女精品人人做人人爽| 欧美喷潮久久久xxxxx| 国产精品久久久久三级| 精品一区二区三区香蕉蜜桃 | 91精品国产综合久久精品app| 日韩理论片在线| 日本二三区不卡| 午夜免费久久看| 久久中文娱乐网| 欧美一级高清片| 91一区一区三区| 国内精品国产成人| 自拍偷拍国产亚洲| 欧美日韩国产美| av电影一区二区| 成人涩涩免费视频| 成人av动漫网站| www.成人在线| 在线观看视频一区| 国产成人精品亚洲日本在线桃色| 蜜桃视频免费观看一区| 亚洲综合另类小说| 一区二区三区av电影| 国产精品久久久一本精品| 亚洲成人激情社区| 午夜影院久久久| 国产成人av一区二区三区在线| 国产综合一区二区| 91首页免费视频| 日韩手机在线导航| 亚洲人123区| 国产在线视频不卡二| 91在线国产福利| 26uuu精品一区二区三区四区在线| 欧美sm极限捆绑bd| 亚洲在线视频一区| 国产毛片精品国产一区二区三区| 91香蕉视频在线| 精品国产一区二区在线观看| 亚洲mv在线观看| 99久久国产免费看| 国产亚洲va综合人人澡精品| 美女久久久精品| 欧美精品一区二区久久婷婷| 蓝色福利精品导航| 欧美剧情电影在线观看完整版免费励志电影| 日本黄色一区二区| 中文字幕二三区不卡| 日韩电影在线观看一区| 99re6这里只有精品视频在线观看| 欧美一区二区三区在线观看视频| 一区在线中文字幕| 成人午夜免费视频| 久久精品亚洲精品国产欧美| 亚洲bt欧美bt精品777| 在线观看日韩毛片| 夜夜揉揉日日人人青青一国产精品 | 国产综合久久久久影院| 91精品福利在线一区二区三区| 偷偷要91色婷婷| 欧美一区欧美二区| 久久国产精品第一页| 欧美日韩成人综合天天影院 |