<?xml version='1.0' encoding='iso-8859-1' standalone='no'?> <doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.4.7"> <compounddef id="tcp_8h" kind="file"> <compoundname>tcp.h</compoundname> <includes refid="sys_8h" local="yes">net/sys.h</includes> <includes refid="mem_8h" local="yes">net/mem.h</includes> <includes refid="pbuf_8h" local="yes">net/pbuf.h</includes> <includes refid="opt_8h" local="yes">net/opt.h</includes> <includes refid="ipv4_2ip_8h" local="yes">net/ipv4/ip.h</includes> <includes refid="ipv4_2icmp_8h" local="yes">net/ipv4/icmp.h</includes> <includes refid="err_8h" local="yes">net/err.h</includes> <includedby refid="api_8h" local="yes">src/sys/include/net/api.h</includedby> <includedby refid="api__msg_8h" local="yes">src/sys/include/net/api_msg.h</includedby> <includedby refid="tcpip_8c" local="yes">src/sys/net/api/tcpip.c</includedby> <includedby refid="loopif_8c" local="yes">src/sys/net/netif/loopif.c</includedby> <includedby refid="tcpdump_8c" local="yes">src/sys/net/netif/tcpdump.c</includedby> <incdepgraph> <node id="1036"> <label>net/ipv4/ip.h</label> <link refid="ipv4_2ip_8h"/> <childnode refid="1033" relation="include"> </childnode> <childnode refid="1037" relation="include"> </childnode> <childnode refid="1035" relation="include"> </childnode> <childnode refid="1039" relation="include"> </childnode> <childnode refid="1040" relation="include"> </childnode> <childnode refid="1041" relation="include"> </childnode> </node> <node id="1038"> <label>arch/lib.h</label> <link refid="lib_8h"/> </node> <node id="1040"> <label>net/netif.h</label> <link refid="netif_8h"/> <childnode refid="1031" relation="include"> </childnode> <childnode refid="1041" relation="include"> </childnode> <childnode refid="1039" relation="include"> </childnode> <childnode refid="1042" relation="include"> </childnode> <childnode refid="1035" relation="include"> </childnode> </node> <node id="1034"> <label>arch/cpu.h</label> <link refid="cpu_8h"/> </node> <node id="1026"> <label>arch/sys_arch.h</label> <link refid="sys__arch_8h"/> </node> <node id="1023"> <label>src/sys/include/net/tcp.h</label> <link refid="tcp.h"/> <childnode refid="1024" relation="include"> </childnode> <childnode refid="1027" relation="include"> </childnode> <childnode refid="1035" relation="include"> </childnode> <childnode refid="1031" relation="include"> </childnode> <childnode refid="1036" relation="include"> </childnode> <childnode refid="1043" relation="include"> </childnode> <childnode refid="1041" relation="include"> </childnode> </node> <node id="1028"> <label>ubixos/types.h</label> <link refid="types_8h"/> <childnode refid="1029" relation="include"> </childnode> </node> <node id="1029"> <label>sys/_types.h</label> <link refid="__types_8h"/> </node> <node id="1033"> <label>net/arch.h</label> <link refid="arch_8h"/> <childnode refid="1034" relation="include"> </childnode> <childnode refid="1025" relation="include"> </childnode> </node> <node id="1043"> <label>net/ipv4/icmp.h</label> <link refid="ipv4_2icmp_8h"/> <childnode refid="1033" relation="include"> </childnode> <childnode refid="1031" relation="include"> </childnode> <childnode refid="1035" relation="include"> </childnode> <childnode refid="1040" relation="include"> </childnode> </node> <node id="1032"> <label>net/lwipopts.h</label> <link refid="lwipopts_8h"/> </node> <node id="1037"> <label>net/def.h</label> <link refid="def_8h"/> <childnode refid="1038" relation="include"> </childnode> </node> <node id="1027"> <label>net/mem.h</label> <link refid="mem_8h"/> <childnode refid="1028" relation="include"> </childnode> <childnode refid="1030" relation="include"> </childnode> <childnode refid="1031" relation="include"> </childnode> <childnode refid="1033" relation="include"> </childnode> </node> <node id="1039"> <label>net/ipv4/ip_addr.h</label> <link refid="ipv4_2ip__addr_8h"/> <childnode refid="1033" relation="include"> </childnode> </node> <node id="1041"> <label>net/err.h</label> <link refid="err_8h"/> <childnode refid="1028" relation="include"> </childnode> <childnode refid="1030" relation="include"> </childnode> <childnode refid="1025" relation="include"> </childnode> </node> <node id="1031"> <label>net/opt.h</label> <link refid="opt_8h"/> <childnode refid="1032" relation="include"> </childnode> </node> <node id="1024"> <label>net/sys.h</label> <link refid="sys_8h"/> <childnode refid="1025" relation="include"> </childnode> <childnode refid="1026" relation="include"> </childnode> </node> <node id="1035"> <label>net/pbuf.h</label> <link refid="pbuf_8h"/> <childnode refid="1030" relation="include"> </childnode> <childnode refid="1033" relation="include"> </childnode> </node> <node id="1030"> <label>net/debug.h</label> <link refid="debug_8h"/> </node> <node id="1042"> <label>net/ipv4/inet.h</label> <link refid="ipv4_2inet_8h"/> <childnode refid="1033" relation="include"> </childnode> <childnode refid="1031" relation="include"> </childnode> <childnode refid="1035" relation="include"> </childnode> <childnode refid="1039" relation="include"> </childnode> </node> <node id="1025"> <label>arch/cc.h</label> <link refid="cc_8h"/> </node> </incdepgraph> <invincdepgraph> <node id="1055"> <label>src/sys/net/net/udpecho.c</label> <link refid="udpecho_8c"/> </node> <node id="1057"> <label>src/sys/net/netif/tcpdump.c</label> <link refid="tcpdump_8c"/> </node> <node id="1056"> <label>src/sys/net/netif/loopif.c</label> <link refid="loopif_8c"/> </node> <node id="1044"> <label>src/sys/include/net/tcp.h</label> <link refid="tcp.h"/> <childnode refid="1045" relation="include"> </childnode> <childnode refid="1046" relation="include"> </childnode> <childnode refid="1049" relation="include"> </childnode> <childnode refid="1056" relation="include"> </childnode> <childnode refid="1057" relation="include"> </childnode> </node> <node id="1053"> <label>src/sys/net/net/bot.c</label> <link refid="bot_8c"/> </node> <node id="1049"> <label>src/sys/net/api/tcpip.c</label> <link refid="tcpip_8c"/> </node> <node id="1047"> <label>src/sys/include/net/tcpip.h</label> <link refid="tcpip_8h"/> <childnode refid="1048" relation="include"> </childnode> <childnode refid="1049" relation="include"> </childnode> <childnode refid="1050" relation="include"> </childnode> </node> <node id="1046"> <label>src/sys/include/net/api_msg.h</label> <link refid="api__msg_8h"/> <childnode refid="1047" relation="include"> </childnode> <childnode refid="1051" relation="include"> </childnode> <childnode refid="1048" relation="include"> </childnode> </node> <node id="1054"> <label>src/sys/net/net/shell.c</label> <link refid="shell_8c"/> </node> <node id="1051"> <label>src/sys/net/api/api_lib.c</label> <link refid="api__lib_8c"/> </node> <node id="1050"> <label>src/sys/net/net/init.c</label> <link refid="init_8c"/> </node> <node id="1045"> <label>src/sys/include/net/api.h</label> <link refid="api_8h"/> <childnode refid="1046" relation="include"> </childnode> <childnode refid="1051" relation="include"> </childnode> <childnode refid="1052" relation="include"> </childnode> <childnode refid="1053" relation="include"> </childnode> <childnode refid="1054" relation="include"> </childnode> <childnode refid="1055" relation="include"> </childnode> </node> <node id="1052"> <label>src/sys/net/api/sockets.c</label> <link refid="sockets_8c"/> </node> <node id="1048"> <label>src/sys/net/api/api_msg.c</label> <link refid="api__msg_8c"/> </node> </invincdepgraph> <innerclass refid="structtcp__hdr" prot="public">tcp_hdr</innerclass> <innerclass refid="structtcp__pcb" prot="public">tcp_pcb</innerclass> <innerclass refid="structtcp__pcb__listen" prot="public">tcp_pcb_listen</innerclass> <innerclass refid="structtcp__seg" prot="public">tcp_seg</innerclass> <sectiondef kind="define"> <memberdef kind="define" id="tcp_8h_1ccaf5aff579a6f08407d691bc92d765d" prot="public" static="no"> <name>tcp_ack</name> <param><defname>pcb</defname></param> <initializer>if((pcb)->flags & TF_ACK_DELAY) { \ (pcb)->flags |= TF_ACK_NOW; \ tcp_output(pcb); \ } else { \ (pcb)->flags |= TF_ACK_DELAY; \ }</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="299" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="297" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_144b3b1ab31a403ba28ec135adfcbefef" prot="public" static="no"> <name>TCP_ACK</name> <initializer>0x10</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="119" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="119" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1d80dc16443af0e5d6dbe5de686274424" prot="public" static="no"> <name>tcp_ack_now</name> <param><defname>pcb</defname></param> <initializer>(pcb)->flags |= TF_ACK_NOW; \ tcp_output(pcb)</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="302" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="304" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_14cb07190c160bd799c8a892229690807" prot="public" static="no"> <name>TCP_FAST_INTERVAL</name> <initializer>200</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="127" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="128" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_188e60aa2cf23e1c65d630701db08c743" prot="public" static="no"> <name>TCP_FIN</name> <initializer>0x01</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="115" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="115" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1e6585b41f836b1b8ca7c7b77d06a6aa6" prot="public" static="no"> <name>TCP_FIN_WAIT_TIMEOUT</name> <initializer>20000</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="129" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="132" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_15758db371d6daa394d178429b7c94c2a" prot="public" static="no"> <name>TCP_HLEN</name> <initializer>20</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="123" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="123" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1a6a464bac77e35eaed0e9cd5bb622722" prot="public" static="no"> <name>TCP_MSL</name> <initializer>60000</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="134" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="137" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1c190a697c41de0c8915ddc6ca00a2b23" prot="public" static="no"> <name>TCP_OOSEQ_TIMEOUT</name> <initializer>6</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="132" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="135" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_199eac823d00bd1192bc65244e7f0fa8c" prot="public" static="no"> <name>tcp_pcbs_sane</name> <param></param> <initializer>1</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="326" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="329" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_11320fd0006a2f70138bc2d0018dda829" prot="public" static="no"> <name>TCP_PSH</name> <initializer>0x08</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="118" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="118" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_150cbae9c0438222ed92ed8cd470d3cb0" prot="public" static="no"> <name>TCP_REG</name> <param><defname>pcbs</defname></param> <param><defname>npcb</defname></param> <initializer>do { \ npcb->next = *pcbs; \ *pcbs = npcb; \ } while(0)</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="382" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="382" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1340e27f5b99231f7a706959ab3be3b59" prot="public" static="no"> <name>TCP_RMV</name> <param><defname>pcbs</defname></param> <param><defname>npcb</defname></param> <initializer>do { \ if(*pcbs == npcb) { \ *pcbs = (*pcbs)->next; \ } else for(<ref refid="tcp_8h_1d5ba0fd03d297b097808b45437face0c" kindref="member">tcp_tmp_pcb</ref> = *pcbs; <ref refid="tcp_8h_1d5ba0fd03d297b097808b45437face0c" kindref="member">tcp_tmp_pcb</ref> != NULL; <ref refid="tcp_8h_1d5ba0fd03d297b097808b45437face0c" kindref="member">tcp_tmp_pcb</ref> = <ref refid="tcp_8h_1d5ba0fd03d297b097808b45437face0c" kindref="member">tcp_tmp_pcb</ref>->next) { \ if(<ref refid="tcp_8h_1d5ba0fd03d297b097808b45437face0c" kindref="member">tcp_tmp_pcb</ref>->next != NULL && <ref refid="tcp_8h_1d5ba0fd03d297b097808b45437face0c" kindref="member">tcp_tmp_pcb</ref>->next == npcb) { \ <ref refid="tcp_8h_1d5ba0fd03d297b097808b45437face0c" kindref="member">tcp_tmp_pcb</ref>->next = npcb->next; \ break; \ } \ } \ npcb->next = NULL; \ } while(0)</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="393" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="386" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_15ca559def464ef20d8b1f7d32f2f160d" prot="public" static="no"> <name>TCP_RST</name> <initializer>0x04</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="117" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="117" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1450d82fe0a95a217fea45e4e28064a67" prot="public" static="no"> <name>TCP_SEQ_GEQ</name> <param><defname>a</defname></param> <param><defname>b</defname></param> <initializer>((<ref refid="types_8h_11657cdc78acd17f92fb047e02f7a5f14" kindref="member">Int32</ref>)((a)-(b)) >= 0)</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="113" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="113" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_182a26df32c421e5eba32de8650382d59" prot="public" static="no"> <name>TCP_SEQ_GT</name> <param><defname>a</defname></param> <param><defname>b</defname></param> <initializer>((<ref refid="types_8h_11657cdc78acd17f92fb047e02f7a5f14" kindref="member">Int32</ref>)((a)-(b)) > 0)</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="112" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="112" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_167688521f2b040529431a17e4fefe0b6" prot="public" static="no"> <name>TCP_SEQ_LEQ</name> <param><defname>a</defname></param> <param><defname>b</defname></param> <initializer>((<ref refid="types_8h_11657cdc78acd17f92fb047e02f7a5f14" kindref="member">Int32</ref>)((a)-(b)) <= 0)</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="111" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="111" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1af70bfea25733f085a8e5c429b597ac4" prot="public" static="no"> <name>TCP_SEQ_LT</name> <param><defname>a</defname></param> <param><defname>b</defname></param> <initializer>((<ref refid="types_8h_11657cdc78acd17f92fb047e02f7a5f14" kindref="member">Int32</ref>)((a)-(b)) < 0)</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="110" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="110" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_16adb391fb7a37611c536b53eb2864d19" prot="public" static="no"> <name>TCP_SLOW_INTERVAL</name> <initializer>500</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="128" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="130" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1d1a95f09deb49cd7341d35527d6d3e2f" prot="public" static="no"> <name>tcp_sndbuf</name> <param><defname>pcb</defname></param> <initializer>((pcb)->snd_buf)</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="81" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="81" bodyend="-1"/> <referencedby refid="api__lib_8c_19363929b6c680bc1dd3f302885128959" compoundref="api__lib_8c" startline="537" endline="609">netconn_write</referencedby> </memberdef> <memberdef kind="define" id="tcp_8h_16020613f5062417d9811cfa837215c83" prot="public" static="no"> <name>TCP_SYN</name> <initializer>0x02</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="116" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="116" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1f47a5928fbbf12665409900b5debd6d2" prot="public" static="no"> <name>TCP_SYN_RCVD_TIMEOUT</name> <initializer>20000</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="130" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="133" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1a878c2fe18c397e18545c1d128beebed" prot="public" static="no"> <name>TCP_TCPLEN</name> <param><defname>seg</defname></param> <initializer>((seg)->len + ((TCPH_FLAGS((seg)->tcphdr) & TCP_FIN || \ TCPH_FLAGS((seg)->tcphdr) & TCP_SYN)? 1: 0))</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="154" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="156" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1d3e68a4c69b6e005e1de46275de3dd09" prot="public" static="no"> <name>TCP_TMR_INTERVAL</name> <initializer>100</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="125" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="125" bodyend="-1"/> <referencedby refid="tcpip_8c_137e1880ffdc8a50daa4e9876bc894a8f" compoundref="tcpip_8c" startline="60" endline="64">tcpip_tcp_timer</referencedby> <referencedby refid="tcpip_8c_161474ad2c2c25ba58cc774e2bcc4ef5f" compoundref="tcpip_8c" startline="68" endline="98">tcpip_thread</referencedby> </memberdef> <memberdef kind="define" id="tcp_8h_1c84f499cba8a02fc0e306c10b2acabf0" prot="public" static="no"> <name>TCP_URG</name> <initializer>0x20</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="120" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="120" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_17cbed647d5a3f1c3ea08217c2209470e" prot="public" static="no"> <name>TCPH_FLAGS</name> <param><defname>hdr</defname></param> <initializer>(NTOHS((hdr)->_offset_flags) & 0xff)</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="148" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="151" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_14b5689df8913d4f563057fd0091af7b3" prot="public" static="no"> <name>TCPH_FLAGS_SET</name> <param><defname>hdr</defname></param> <param><defname>flags</defname></param> <initializer>(hdr)->_offset_flags = HTONS((TCPH_OFFSET(hdr) << 8) | (flags))</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="151" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="154" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1403593983c0c7850ae73396e62de043e" prot="public" static="no"> <name>TCPH_OFFSET</name> <param><defname>hdr</defname></param> <initializer>(NTOHS((hdr)->_offset_flags) >> 8)</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="147" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="150" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1df73b8a5787048ba91dda965f0fa547a" prot="public" static="no"> <name>TCPH_OFFSET_SET</name> <param><defname>hdr</defname></param> <param><defname>offset</defname></param> <initializer>(hdr)->_offset_flags = HTONS(((offset) << 8) | TCPH_FLAGS(hdr))</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="150" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="153" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1b578ff02026a5e4b1bbad24ec9e9f4d5" prot="public" static="no"> <name>TF_ACK_DELAY</name> <initializer>0x01</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="201" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="204" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1cab515db1f19653bfe55b4eb34a441a6" prot="public" static="no"> <name>TF_ACK_NOW</name> <initializer>0x02</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="202" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="205" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1d911d2567fa5bb98044e271bf84e81fa" prot="public" static="no"> <name>TF_CLOSED</name> <initializer>0x10</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="205" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="208" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_10ecc5fb69bdd77ac66d945f7434b7431" prot="public" static="no"> <name>TF_GOT_FIN</name> <initializer>0x20</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="206" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="209" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1923f934772e1cb9b3efb785e627f7682" prot="public" static="no"> <name>TF_INFR</name> <initializer>0x04</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="203" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="206" bodyend="-1"/> </memberdef> <memberdef kind="define" id="tcp_8h_1c9dbdaeac3e25f5badf3a763a1b0b990" prot="public" static="no"> <name>TF_RESET</name> <initializer>0x08</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="204" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="207" bodyend="-1"/> </memberdef> </sectiondef> <sectiondef kind="enum"> <memberdef kind="enum" id="tcp_8h_1aad63c28ec94587c99838bd52424d634" prot="public" static="no"> <name>tcp_state</name> <enumvalue id="tcp_8h_1aad63c28ec94587c99838bd52424d634929f0327e17604ce9713b2a6117bd603" prot="public"> <name>CLOSED</name> <initializer> 0</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> </enumvalue> <enumvalue id="tcp_8h_1aad63c28ec94587c99838bd52424d634331ec9878c0ed22e62de969d4b96b5bb" prot="public"> <name>LISTEN</name> <initializer> 1</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> </enumvalue> <enumvalue id="tcp_8h_1aad63c28ec94587c99838bd52424d6343884e45cc6d937b234e2a8c2c933d7e5" prot="public"> <name>SYN_SENT</name> <initializer> 2</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> </enumvalue> <enumvalue id="tcp_8h_1aad63c28ec94587c99838bd52424d6341ee0633a9749f202ccb75862d3aefc85" prot="public"> <name>SYN_RCVD</name> <initializer> 3</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> </enumvalue> <enumvalue id="tcp_8h_1aad63c28ec94587c99838bd52424d63481d0d81381abb711562b19a00a4cb9af" prot="public"> <name>ESTABLISHED</name> <initializer> 4</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> </enumvalue> <enumvalue id="tcp_8h_1aad63c28ec94587c99838bd52424d6342ca754767c3666fc17fe7f5bf49e7518" prot="public"> <name>FIN_WAIT_1</name> <initializer> 5</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> </enumvalue> <enumvalue id="tcp_8h_1aad63c28ec94587c99838bd52424d6341ff416801732ff573184491c86ee7032" prot="public"> <name>FIN_WAIT_2</name> <initializer> 6</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> </enumvalue> <enumvalue id="tcp_8h_1aad63c28ec94587c99838bd52424d634dbf32c37bc28f37e44d0fe611d341178" prot="public"> <name>CLOSE_WAIT</name> <initializer> 7</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> </enumvalue> <enumvalue id="tcp_8h_1aad63c28ec94587c99838bd52424d6348ab2cae69d2b33297ab24a5818213f18" prot="public"> <name>CLOSING</name> <initializer> 8</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> </enumvalue> <enumvalue id="tcp_8h_1aad63c28ec94587c99838bd52424d6341b588a108a727c1de55f818cb9ff57eb" prot="public"> <name>LAST_ACK</name> <initializer> 9</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> </enumvalue> <enumvalue id="tcp_8h_1aad63c28ec94587c99838bd52424d634799374a9f3fbdfc7f7e92c0f9c5627f7" prot="public"> <name>TIME_WAIT</name> <initializer> 10</initializer> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> </enumvalue> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="159" bodyfile="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" bodystart="159" bodyend="171"/> </memberdef> </sectiondef> <sectiondef kind="func"> <memberdef kind="function" id="tcp_8h_1468c2260ddb01582e966ddcf3c25ce61" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_abort</definition> <argsstring>(struct tcp_pcb *pcb)</argsstring> <name>tcp_abort</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="91"/> <referencedby refid="api__msg_8c_1351ca82b3580d84ee0d70f7ab033a236" compoundref="api__msg_8c" startline="208" endline="240">do_delconn</referencedby> </memberdef> <memberdef kind="function" id="tcp_8h_1e77434b264a469ee4124ff945feac490" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_accept</definition> <argsstring>(struct tcp_pcb *pcb, err_t(*accept)(void *arg, struct tcp_pcb *newpcb, err_t err))</argsstring> <name>tcp_accept</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <param> <type><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref>(*)(void *arg, struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *newpcb, <ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref> err)</type> <declname>accept</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="68"/> <referencedby refid="api__msg_8c_1351ca82b3580d84ee0d70f7ab033a236" compoundref="api__msg_8c" startline="208" endline="240">do_delconn</referencedby> <referencedby refid="api__msg_8c_1c5f93428ba9863cd9b438edfd8715626" compoundref="api__msg_8c" startline="368" endline="398">do_listen</referencedby> </memberdef> <memberdef kind="function" id="tcp_8h_1c10926e6f76f73e17c0d37aaab3e56b6" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_arg</definition> <argsstring>(struct tcp_pcb *pcb, void *arg)</argsstring> <name>tcp_arg</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <param> <type>void *</type> <declname>arg</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="65"/> <referencedby refid="api__msg_8c_1351ca82b3580d84ee0d70f7ab033a236" compoundref="api__msg_8c" startline="208" endline="240">do_delconn</referencedby> <referencedby refid="api__msg_8c_1c5f93428ba9863cd9b438edfd8715626" compoundref="api__msg_8c" startline="368" endline="398">do_listen</referencedby> <referencedby refid="api__msg_8c_1b5d697e0acb9e92139f177233cb42fbd" compoundref="api__msg_8c" startline="147" endline="157">setup_tcp</referencedby> </memberdef> <memberdef kind="function" id="tcp_8h_19c6755fabde07b48e59cb98d6102fbfc" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref></type> <definition>err_t tcp_bind</definition> <argsstring>(struct tcp_pcb *pcb, struct ip_addr *ipaddr, uInt16 port)</argsstring> <name>tcp_bind</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <param> <type>struct <ref refid="structip__addr" kindref="compound">ip_addr</ref> *</type> <declname>ipaddr</declname> </param> <param> <type><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref></type> <declname>port</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="85"/> <referencedby refid="api__msg_8c_1cab3f82cc16d96db0db1f17b872613a4" compoundref="api__msg_8c" startline="243" endline="281">do_bind</referencedby> </memberdef> <memberdef kind="function" id="tcp_8h_187093e137fcc53ea82a134a3f5b33623" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref></type> <definition>err_t tcp_close</definition> <argsstring>(struct tcp_pcb *pcb)</argsstring> <name>tcp_close</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="92"/> <referencedby refid="api__msg_8c_19b56a6c9fb571348291027f09471890a" compoundref="api__msg_8c" startline="479" endline="501">do_close</referencedby> <referencedby refid="api__msg_8c_1351ca82b3580d84ee0d70f7ab033a236" compoundref="api__msg_8c" startline="208" endline="240">do_delconn</referencedby> </memberdef> <memberdef kind="function" id="tcp_8h_1e444a97cf28a0f6b644550ab77e9dfb7" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref></type> <definition>err_t tcp_connect</definition> <argsstring>(struct tcp_pcb *pcb, struct ip_addr *ipaddr, uInt16 port, err_t(*connected)(void *arg, struct tcp_pcb *tpcb, err_t err))</argsstring> <name>tcp_connect</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <param> <type>struct <ref refid="structip__addr" kindref="compound">ip_addr</ref> *</type> <declname>ipaddr</declname> </param> <param> <type><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref></type> <declname>port</declname> </param> <param> <type><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref>(*)(void *arg, struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *tpcb, <ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref> err)</type> <declname>connected</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="89"/> <referencedby refid="api__msg_8c_18ad3068b45627dbe48440d4d6e1607d1" compoundref="api__msg_8c" startline="305" endline="365">do_connect</referencedby> </memberdef> <memberdef kind="function" id="tcp_8h_1598c918fc63361644d1bd10bb994cfc6" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref></type> <definition>err_t tcp_enqueue</definition> <argsstring>(struct tcp_pcb *pcb, void *dataptr, uInt16 len, uInt8 flags, uInt8 copy, uInt8 *optdata, uInt8 optlen)</argsstring> <name>tcp_enqueue</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <param> <type>void *</type> <declname>dataptr</declname> </param> <param> <type><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref></type> <declname>len</declname> </param> <param> <type><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref></type> <declname>flags</declname> </param> <param> <type><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref></type> <declname>copy</declname> </param> <param> <type><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref> *</type> <declname>optdata</declname> </param> <param> <type><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref></type> <declname>optlen</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="310"/> </memberdef> <memberdef kind="function" id="tcp_8h_1fe31e32503125886e9174d1aa132310a" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_err</definition> <argsstring>(struct tcp_pcb *pcb, void(*err)(void *arg, err_t err))</argsstring> <name>tcp_err</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <param> <type>void(*)(void *arg, <ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref> err)</type> <declname>err</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="79"/> <referencedby refid="api__msg_8c_1351ca82b3580d84ee0d70f7ab033a236" compoundref="api__msg_8c" startline="208" endline="240">do_delconn</referencedby> <referencedby refid="api__msg_8c_1b5d697e0acb9e92139f177233cb42fbd" compoundref="api__msg_8c" startline="147" endline="157">setup_tcp</referencedby> </memberdef> <memberdef kind="function" id="tcp_8h_1bf446b07e52161b8a53cea07bc6c366d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_fasttmr</definition> <argsstring>(void)</argsstring> <name>tcp_fasttmr</name> <param> <type>void</type> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="99"/> </memberdef> <memberdef kind="function" id="tcp_8h_151de4ded7d342456d31722493c92c969" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_init</definition> <argsstring>(void)</argsstring> <name>tcp_init</name> <param> <type>void</type> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="57"/> <referencedby refid="tcpip_8c_161474ad2c2c25ba58cc774e2bcc4ef5f" compoundref="tcpip_8c" startline="68" endline="98">tcpip_thread</referencedby> </memberdef> <memberdef kind="function" id="tcp_8h_1e70c3c99d9dd6b07f7e11f7ba5eedcb5" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_input</definition> <argsstring>(struct pbuf *p, struct netif *inp)</argsstring> <name>tcp_input</name> <param> <type>struct <ref refid="structpbuf" kindref="compound">pbuf</ref> *</type> <declname>p</declname> </param> <param> <type>struct <ref refid="structnetif" kindref="compound">netif</ref> *</type> <declname>inp</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="103"/> </memberdef> <memberdef kind="function" id="tcp_8h_1d756bca9bf3258d2df5df16fd8ed26ad" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <definition>struct tcp_pcb* tcp_listen</definition> <argsstring>(struct tcp_pcb *pcb)</argsstring> <name>tcp_listen</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="90"/> <referencedby refid="api__msg_8c_1c5f93428ba9863cd9b438edfd8715626" compoundref="api__msg_8c" startline="368" endline="398">do_listen</referencedby> </memberdef> <memberdef kind="function" id="tcp_8h_17427c5d237fe66a8097bfa8d24ceb943" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <definition>struct tcp_pcb* tcp_new</definition> <argsstring>(void)</argsstring> <name>tcp_new</name> <param> <type>void</type> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="63"/> <referencedby refid="api__msg_8c_1cab3f82cc16d96db0db1f17b872613a4" compoundref="api__msg_8c" startline="243" endline="281">do_bind</referencedby> <referencedby refid="api__msg_8c_18ad3068b45627dbe48440d4d6e1607d1" compoundref="api__msg_8c" startline="305" endline="365">do_connect</referencedby> </memberdef> <memberdef kind="function" id="tcp_8h_1f2d1b7b0daa5d9c05d1bb8082f8264eb" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type><ref refid="types_8h_15847ea0262a5aa61eee48cbe95544a78" kindref="member">uInt32</ref></type> <definition>uInt32 tcp_next_iss</definition> <argsstring>(void)</argsstring> <name>tcp_next_iss</name> <param> <type>void</type> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="318"/> </memberdef> <memberdef kind="function" id="tcp_8h_10cbcc6d628f644a530daf629fa3e5f7f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref></type> <definition>err_t tcp_output</definition> <argsstring>(struct tcp_pcb *pcb)</argsstring> <name>tcp_output</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="105"/> <referencedby refid="api__msg_8c_1ad9b6e185b705c42c144f849b54fbf0e" compoundref="api__msg_8c" startline="449" endline="476">do_write</referencedby> </memberdef> <memberdef kind="function" id="tcp_8h_18dc15d72a4f385846d924592da33c879" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <definition>struct tcp_pcb* tcp_pcb_copy</definition> <argsstring>(struct tcp_pcb *pcb)</argsstring> <name>tcp_pcb_copy</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="289"/> </memberdef> <memberdef kind="function" id="tcp_8h_144fc672b9d14a65e61040707c45302ba" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_pcb_purge</definition> <argsstring>(struct tcp_pcb *pcb)</argsstring> <name>tcp_pcb_purge</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="290"/> </memberdef> <memberdef kind="function" id="tcp_8h_1aaef096f6a03bf5b778329bb66ee06f6" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_pcb_remove</definition> <argsstring>(struct tcp_pcb **pcblist, struct tcp_pcb *pcb)</argsstring> <name>tcp_pcb_remove</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> **</type> <declname>pcblist</declname> </param> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="291"/> </memberdef> <memberdef kind="function" id="tcp_8h_1305113b53237aa7c6ab87234e9a1e441" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_poll</definition> <argsstring>(struct tcp_pcb *pcb, err_t(*poll)(void *arg, struct tcp_pcb *tpcb), uInt8 interval)</argsstring> <name>tcp_poll</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <param> <type><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref>(*)(void *arg, struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *tpcb)</type> <declname>poll</declname> </param> <param> <type><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref></type> <declname>interval</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="77"/> <referencedby refid="api__msg_8c_1351ca82b3580d84ee0d70f7ab033a236" compoundref="api__msg_8c" startline="208" endline="240">do_delconn</referencedby> <referencedby refid="api__msg_8c_1b5d697e0acb9e92139f177233cb42fbd" compoundref="api__msg_8c" startline="147" endline="157">setup_tcp</referencedby> </memberdef> <memberdef kind="function" id="tcp_8h_1f58be9006b4ddb720113f03d56bc6e52" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_recv</definition> <argsstring>(struct tcp_pcb *pcb, err_t(*recv)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err))</argsstring> <name>tcp_recv</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <param> <type><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref>(*)(void *arg, struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *tpcb, struct <ref refid="structpbuf" kindref="compound">pbuf</ref> *p, <ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref> err)</type> <declname>recv</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="71"/> <referencedby refid="api__msg_8c_1351ca82b3580d84ee0d70f7ab033a236" compoundref="api__msg_8c" startline="208" endline="240">do_delconn</referencedby> <referencedby refid="api__msg_8c_1b5d697e0acb9e92139f177233cb42fbd" compoundref="api__msg_8c" startline="147" endline="157">setup_tcp</referencedby> </memberdef> <memberdef kind="function" id="tcp_8h_16b6b2d7993a2b4e1ef7e0f9425a2870d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_recved</definition> <argsstring>(struct tcp_pcb *pcb, uInt16 len)</argsstring> <name>tcp_recved</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <param> <type><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref></type> <declname>len</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="83"/> <referencedby refid="api__msg_8c_1e2a8fddd0b0f2a2b50c6e52281d37a67" compoundref="api__msg_8c" startline="438" endline="446">do_recv</referencedby> </memberdef> <memberdef kind="function" id="tcp_8h_131749219b8aeb4957f7c350f4427a839" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_rexmit_seg</definition> <argsstring>(struct tcp_pcb *pcb, struct tcp_seg *seg)</argsstring> <name>tcp_rexmit_seg</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <param> <type>struct <ref refid="structtcp__seg" kindref="compound">tcp_seg</ref> *</type> <declname>seg</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="312"/> </memberdef> <memberdef kind="function" id="tcp_8h_1c34efb2d4b95acff840c84d22d59fb4c" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_rst</definition> <argsstring>(uInt32 seqno, uInt32 ackno, struct ip_addr *local_ip, struct ip_addr *remote_ip, uInt16 local_port, uInt16 remote_port)</argsstring> <name>tcp_rst</name> <param> <type><ref refid="types_8h_15847ea0262a5aa61eee48cbe95544a78" kindref="member">uInt32</ref></type> <declname>seqno</declname> </param> <param> <type><ref refid="types_8h_15847ea0262a5aa61eee48cbe95544a78" kindref="member">uInt32</ref></type> <declname>ackno</declname> </param> <param> <type>struct <ref refid="structip__addr" kindref="compound">ip_addr</ref> *</type> <declname>local_ip</declname> </param> <param> <type>struct <ref refid="structip__addr" kindref="compound">ip_addr</ref> *</type> <declname>remote_ip</declname> </param> <param> <type><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref></type> <declname>local_port</declname> </param> <param> <type><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref></type> <declname>remote_port</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="316"/> </memberdef> <memberdef kind="function" id="tcp_8h_1569d79451d2570e4ef406775725ef6ef" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type><ref refid="structtcp__seg" kindref="compound">tcp_seg</ref> *</type> <definition>struct tcp_seg* tcp_seg_copy</definition> <argsstring>(struct tcp_seg *seg)</argsstring> <name>tcp_seg_copy</name> <param> <type>struct <ref refid="structtcp__seg" kindref="compound">tcp_seg</ref> *</type> <declname>seg</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="295"/> </memberdef> <memberdef kind="function" id="tcp_8h_11ea20aae291bb7cd0928c816124ecbac" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref></type> <definition>uInt8 tcp_seg_free</definition> <argsstring>(struct tcp_seg *seg)</argsstring> <name>tcp_seg_free</name> <param> <type>struct <ref refid="structtcp__seg" kindref="compound">tcp_seg</ref> *</type> <declname>seg</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="294"/> </memberdef> <memberdef kind="function" id="tcp_8h_12a7a22b8d118eb3b4c9682fb7cf455ef" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref></type> <definition>uInt8 tcp_segs_free</definition> <argsstring>(struct tcp_seg *seg)</argsstring> <name>tcp_segs_free</name> <param> <type>struct <ref refid="structtcp__seg" kindref="compound">tcp_seg</ref> *</type> <declname>seg</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="293"/> </memberdef> <memberdef kind="function" id="tcp_8h_1bbfc0df797ca8d52b73703e3a8e5e030" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref></type> <definition>err_t tcp_send_ctrl</definition> <argsstring>(struct tcp_pcb *pcb, uInt8 flags)</argsstring> <name>tcp_send_ctrl</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <param> <type><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref></type> <declname>flags</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="307"/> </memberdef> <memberdef kind="function" id="tcp_8h_13df9afd68d4aca2fe5113c67eacb8b7a" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_sent</definition> <argsstring>(struct tcp_pcb *pcb, err_t(*sent)(void *arg, struct tcp_pcb *tpcb, uInt16 len))</argsstring> <name>tcp_sent</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <param> <type><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref>(*)(void *arg, struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *tpcb, <ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref> len)</type> <declname>sent</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="74"/> <referencedby refid="api__msg_8c_1351ca82b3580d84ee0d70f7ab033a236" compoundref="api__msg_8c" startline="208" endline="240">do_delconn</referencedby> <referencedby refid="api__msg_8c_1b5d697e0acb9e92139f177233cb42fbd" compoundref="api__msg_8c" startline="147" endline="157">setup_tcp</referencedby> </memberdef> <memberdef kind="function" id="tcp_8h_1421fb42ef919018e14ae413adfee9905" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_slowtmr</definition> <argsstring>(void)</argsstring> <name>tcp_slowtmr</name> <param> <type>void</type> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="98"/> </memberdef> <memberdef kind="function" id="tcp_8h_13846a756b13214ed88ea47d0ff8279eb" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type>void</type> <definition>void tcp_tmr</definition> <argsstring>(void)</argsstring> <name>tcp_tmr</name> <param> <type>void</type> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="59"/> <referencedby refid="tcpip_8c_137e1880ffdc8a50daa4e9876bc894a8f" compoundref="tcpip_8c" startline="60" endline="64">tcpip_tcp_timer</referencedby> </memberdef> <memberdef kind="function" id="tcp_8h_1212607f48aaac1e91a2f09b7880b7c3f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref></type> <definition>err_t tcp_write</definition> <argsstring>(struct tcp_pcb *pcb, const void *dataptr, uInt16 len, uInt8 copy)</argsstring> <name>tcp_write</name> <param> <type>struct <ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <declname>pcb</declname> </param> <param> <type>const void *</type> <declname>dataptr</declname> </param> <param> <type><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref></type> <declname>len</declname> </param> <param> <type><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref></type> <declname>copy</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="94"/> <referencedby refid="api__msg_8c_1ad9b6e185b705c42c144f849b54fbf0e" compoundref="api__msg_8c" startline="449" endline="476">do_write</referencedby> </memberdef> </sectiondef> <sectiondef kind="var"> <memberdef kind="variable" id="tcp_8h_1cb58d184b477aa0d8ccf5053dcc78f8e" prot="public" static="no" mutable="no"> <type><ref refid="structtcp__hdr" kindref="compound">tcp_hdr</ref></type> <definition>struct tcp_hdr PACK_STRUCT_STRUCT</definition> <argsstring></argsstring> <name>PACK_STRUCT_STRUCT</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="148"/> </memberdef> <memberdef kind="variable" id="tcp_8h_178c09dbae67ccc06b659d9f1a388f911" prot="public" static="no" mutable="no"> <type><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <definition>struct tcp_pcb* tcp_active_pcbs</definition> <argsstring></argsstring> <name>tcp_active_pcbs</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="335"/> </memberdef> <memberdef kind="variable" id="tcp_8h_1b7b955629fe5e7d94321580f969cf076" prot="public" static="no" mutable="no"> <type><ref refid="structtcp__pcb__listen" kindref="compound">tcp_pcb_listen</ref> *</type> <definition>struct tcp_pcb_listen* tcp_listen_pcbs</definition> <argsstring></argsstring> <name>tcp_listen_pcbs</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="334"/> </memberdef> <memberdef kind="variable" id="tcp_8h_189c4a68ace479c2362a2821616e2c15a" prot="public" static="no" mutable="no"> <type><ref refid="types_8h_15847ea0262a5aa61eee48cbe95544a78" kindref="member">uInt32</ref></type> <definition>uInt32 tcp_ticks</definition> <argsstring></argsstring> <name>tcp_ticks</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="320"/> </memberdef> <memberdef kind="variable" id="tcp_8h_1d5ba0fd03d297b097808b45437face0c" prot="public" static="no" mutable="no"> <type><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <definition>struct tcp_pcb* tcp_tmp_pcb</definition> <argsstring></argsstring> <name>tcp_tmp_pcb</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="340"/> </memberdef> <memberdef kind="variable" id="tcp_8h_19a522a66c5e1f1a4e28fe7a672cc64e3" prot="public" static="no" mutable="no"> <type><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref> *</type> <definition>struct tcp_pcb* tcp_tw_pcbs</definition> <argsstring></argsstring> <name>tcp_tw_pcbs</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h" line="338"/> </memberdef> </sectiondef> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <programlisting> <codeline lineno="1"><highlight class="comment">/*</highlight></codeline> <codeline lineno="2"><highlight class="comment"><sp/>*<sp/>Copyright<sp/>(c)<sp/>2001,<sp/>Swedish<sp/>Institute<sp/>of<sp/>Computer<sp/>Science.</highlight></codeline> <codeline lineno="3"><highlight class="comment"><sp/>*<sp/>All<sp/>rights<sp/>reserved.<sp/></highlight></codeline> <codeline lineno="4"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="5"><highlight class="comment"><sp/>*<sp/>Redistribution<sp/>and<sp/>use<sp/>in<sp/>source<sp/>and<sp/>binary<sp/>forms,<sp/>with<sp/>or<sp/>without<sp/></highlight></codeline> <codeline lineno="6"><highlight class="comment"><sp/>*<sp/>modification,<sp/>are<sp/>permitted<sp/>provided<sp/>that<sp/>the<sp/>following<sp/>conditions<sp/></highlight></codeline> <codeline lineno="7"><highlight class="comment"><sp/>*<sp/>are<sp/>met:<sp/></highlight></codeline> <codeline lineno="8"><highlight class="comment"><sp/>*<sp/>1.<sp/>Redistributions<sp/>of<sp/>source<sp/>code<sp/>must<sp/>retain<sp/>the<sp/>above<sp/>copyright<sp/></highlight></codeline> <codeline lineno="9"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>notice,<sp/>this<sp/>list<sp/>of<sp/>conditions<sp/>and<sp/>the<sp/>following<sp/>disclaimer.<sp/></highlight></codeline> <codeline lineno="10"><highlight class="comment"><sp/>*<sp/>2.<sp/>Redistributions<sp/>in<sp/>binary<sp/>form<sp/>must<sp/>reproduce<sp/>the<sp/>above<sp/>copyright<sp/></highlight></codeline> <codeline lineno="11"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>notice,<sp/>this<sp/>list<sp/>of<sp/>conditions<sp/>and<sp/>the<sp/>following<sp/>disclaimer<sp/>in<sp/>the<sp/></highlight></codeline> <codeline lineno="12"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>documentation<sp/>and/or<sp/>other<sp/>materials<sp/>provided<sp/>with<sp/>the<sp/>distribution.<sp/></highlight></codeline> <codeline lineno="13"><highlight class="comment"><sp/>*<sp/>3.<sp/>Neither<sp/>the<sp/>name<sp/>of<sp/>the<sp/>Institute<sp/>nor<sp/>the<sp/>names<sp/>of<sp/>its<sp/>contributors<sp/></highlight></codeline> <codeline lineno="14"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>may<sp/>be<sp/>used<sp/>to<sp/>endorse<sp/>or<sp/>promote<sp/>products<sp/>derived<sp/>from<sp/>this<sp/>software<sp/></highlight></codeline> <codeline lineno="15"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>without<sp/>specific<sp/>prior<sp/>written<sp/>permission.<sp/></highlight></codeline> <codeline lineno="16"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="17"><highlight class="comment"><sp/>*<sp/>THIS<sp/>SOFTWARE<sp/>IS<sp/>PROVIDED<sp/>BY<sp/>THE<sp/>INSTITUTE<sp/>AND<sp/>CONTRIBUTORS<sp/>``AS<sp/>IS''<sp/>AND<sp/></highlight></codeline> <codeline lineno="18"><highlight class="comment"><sp/>*<sp/>ANY<sp/>EXPRESS<sp/>OR<sp/>IMPLIED<sp/>WARRANTIES,<sp/>INCLUDING,<sp/>BUT<sp/>NOT<sp/>LIMITED<sp/>TO,<sp/>THE<sp/></highlight></codeline> <codeline lineno="19"><highlight class="comment"><sp/>*<sp/>IMPLIED<sp/>WARRANTIES<sp/>OF<sp/>MERCHANTABILITY<sp/>AND<sp/>FITNESS<sp/>FOR<sp/>A<sp/>PARTICULAR<sp/>PURPOSE<sp/></highlight></codeline> <codeline lineno="20"><highlight class="comment"><sp/>*<sp/>ARE<sp/>DISCLAIMED.<sp/><sp/>IN<sp/>NO<sp/>EVENT<sp/>SHALL<sp/>THE<sp/>INSTITUTE<sp/>OR<sp/>CONTRIBUTORS<sp/>BE<sp/>LIABLE<sp/></highlight></codeline> <codeline lineno="21"><highlight class="comment"><sp/>*<sp/>FOR<sp/>ANY<sp/>DIRECT,<sp/>INDIRECT,<sp/>INCIDENTAL,<sp/>SPECIAL,<sp/>EXEMPLARY,<sp/>OR<sp/>CONSEQUENTIAL<sp/></highlight></codeline> <codeline lineno="22"><highlight class="comment"><sp/>*<sp/>DAMAGES<sp/>(INCLUDING,<sp/>BUT<sp/>NOT<sp/>LIMITED<sp/>TO,<sp/>PROCUREMENT<sp/>OF<sp/>SUBSTITUTE<sp/>GOODS<sp/></highlight></codeline> <codeline lineno="23"><highlight class="comment"><sp/>*<sp/>OR<sp/>SERVICES;<sp/>LOSS<sp/>OF<sp/>USE,<sp/>DATA,<sp/>OR<sp/>PROFITS;<sp/>OR<sp/>BUSINESS<sp/>INTERRUPTION)<sp/></highlight></codeline> <codeline lineno="24"><highlight class="comment"><sp/>*<sp/>HOWEVER<sp/>CAUSED<sp/>AND<sp/>ON<sp/>ANY<sp/>THEORY<sp/>OF<sp/>LIABILITY,<sp/>WHETHER<sp/>IN<sp/>CONTRACT,<sp/>STRICT<sp/></highlight></codeline> <codeline lineno="25"><highlight class="comment"><sp/>*<sp/>LIABILITY,<sp/>OR<sp/>TORT<sp/>(INCLUDING<sp/>NEGLIGENCE<sp/>OR<sp/>OTHERWISE)<sp/>ARISING<sp/>IN<sp/>ANY<sp/>WAY<sp/></highlight></codeline> <codeline lineno="26"><highlight class="comment"><sp/>*<sp/>OUT<sp/>OF<sp/>THE<sp/>USE<sp/>OF<sp/>THIS<sp/>SOFTWARE,<sp/>EVEN<sp/>IF<sp/>ADVISED<sp/>OF<sp/>THE<sp/>POSSIBILITY<sp/>OF<sp/></highlight></codeline> <codeline lineno="27"><highlight class="comment"><sp/>*<sp/>SUCH<sp/>DAMAGE.<sp/></highlight></codeline> <codeline lineno="28"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="29"><highlight class="comment"><sp/>*<sp/>This<sp/>file<sp/>is<sp/>part<sp/>of<sp/>the<sp/>lwIP<sp/>TCP/IP<sp/>stack.</highlight></codeline> <codeline lineno="30"><highlight class="comment"><sp/>*<sp/></highlight></codeline> <codeline lineno="31"><highlight class="comment"><sp/>*<sp/>Author:<sp/>Adam<sp/>Dunkels<sp/><adam@sics.se></highlight></codeline> <codeline lineno="32"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="33"><highlight class="comment"><sp/>*<sp/>$Id: tcp_8h.xml 88 2016-01-12 00:11:29Z reddawg $</highlight></codeline> <codeline lineno="34"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="35"><highlight class="normal"></highlight><highlight class="preprocessor">#ifndef<sp/>__LWIP_TCP_H__</highlight></codeline> <codeline lineno="36"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#define<sp/>__LWIP_TCP_H__</highlight></codeline> <codeline lineno="37"><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="38"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="sys_8h" kindref="compound">net/sys.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="39"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="mem_8h" kindref="compound">net/mem.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="40"><highlight class="normal"></highlight></codeline> <codeline lineno="41"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="pbuf_8h" kindref="compound">net/pbuf.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="42"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="opt_8h" kindref="compound">net/opt.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="43"><highlight class="normal"></highlight><highlight class="comment">//UBU</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="44"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="ipv4_2ip_8h" kindref="compound">net/ipv4/ip.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="45"><highlight class="normal"></highlight><highlight class="comment">//UBU</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="46"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="ipv4_2icmp_8h" kindref="compound">net/ipv4/icmp.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="47"><highlight class="normal"></highlight></codeline> <codeline lineno="48"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="sys_8h" kindref="compound">net/sys.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="49"><highlight class="normal"></highlight></codeline> <codeline lineno="50"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="err_8h" kindref="compound">net/err.h</ref>"</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="51"><highlight class="normal"></highlight></codeline> <codeline lineno="52"><highlight class="normal"></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref>;</highlight></codeline> <codeline lineno="53"><highlight class="normal"></highlight></codeline> <codeline lineno="54"><highlight class="normal"></highlight><highlight class="comment">/*<sp/>Functions<sp/>for<sp/>interfacing<sp/>with<sp/>TCP:<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="55"><highlight class="normal"></highlight></codeline> <codeline lineno="56"><highlight class="normal"></highlight><highlight class="comment">/*<sp/>Lower<sp/>layer<sp/>interface<sp/>to<sp/>TCP:<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="57"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_151de4ded7d342456d31722493c92c969" kindref="member">tcp_init</ref><sp/><sp/><sp/><sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">);<sp/><sp/></highlight><highlight class="comment">/*<sp/>Must<sp/>be<sp/>called<sp/>first<sp/>to</highlight></codeline> <codeline lineno="58"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>initialize<sp/>TCP.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="59"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_13846a756b13214ed88ea47d0ff8279eb" kindref="member">tcp_tmr</ref><sp/><sp/><sp/><sp/><sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">);<sp/><sp/></highlight><highlight class="comment">/*<sp/>Must<sp/>be<sp/>called<sp/>every</highlight></codeline> <codeline lineno="60"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>TCP_TMR_INTERVAL</highlight></codeline> <codeline lineno="61"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms.<sp/>(Typically<sp/>100<sp/>ms).<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="62"><highlight class="normal"></highlight><highlight class="comment">/*<sp/>Application<sp/>program's<sp/>interface:<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="63"><highlight class="normal"></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*<sp/><ref refid="tcp_8h_17427c5d237fe66a8097bfa8d24ceb943" kindref="member">tcp_new</ref><sp/><sp/><sp/><sp/><sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">);</highlight></codeline> <codeline lineno="64"><highlight class="normal"></highlight></codeline> <codeline lineno="65"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_1c10926e6f76f73e17c0d37aaab3e56b6" kindref="member">tcp_arg</ref><sp/><sp/><sp/><sp/><sp/>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb,<sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*arg);</highlight></codeline> <codeline lineno="66"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_1e77434b264a469ee4124ff945feac490" kindref="member">tcp_accept</ref><sp/><sp/>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb,</highlight></codeline> <codeline lineno="67"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>(*<sp/><ref refid="structtcp__pcb_17db60023f473c0ac30f276f7081af7cc" kindref="member">accept</ref>)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*arg,<sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*newpcb,</highlight></codeline> <codeline lineno="68"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>err));</highlight></codeline> <codeline lineno="69"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_1f58be9006b4ddb720113f03d56bc6e52" kindref="member">tcp_recv</ref><sp/><sp/><sp/><sp/>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb,</highlight></codeline> <codeline lineno="70"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>(*<sp/><ref refid="structtcp__pcb_147cbc234ff5228456e7241d851b98dd9" kindref="member">recv</ref>)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*arg,<sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*tpcb,</highlight></codeline> <codeline lineno="71"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structpbuf" kindref="compound">pbuf</ref><sp/>*p,<sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>err));</highlight></codeline> <codeline lineno="72"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_13df9afd68d4aca2fe5113c67eacb8b7a" kindref="member">tcp_sent</ref><sp/><sp/><sp/><sp/>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb,</highlight></codeline> <codeline lineno="73"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>(*<sp/><ref refid="structtcp__pcb_199f0e2a5a4930a70fbb6585df05e5492" kindref="member">sent</ref>)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*arg,<sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*tpcb,</highlight></codeline> <codeline lineno="74"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/>len));</highlight></codeline> <codeline lineno="75"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_1305113b53237aa7c6ab87234e9a1e441" kindref="member">tcp_poll</ref><sp/><sp/><sp/><sp/>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb,</highlight></codeline> <codeline lineno="76"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>(*<sp/><ref refid="structtcp__pcb_1126cb76a2919f16179bc8fbe519838a4" kindref="member">poll</ref>)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*arg,<sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*tpcb),</highlight></codeline> <codeline lineno="77"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref><sp/>interval);</highlight></codeline> <codeline lineno="78"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_1fe31e32503125886e9174d1aa132310a" kindref="member">tcp_err</ref><sp/><sp/><sp/><sp/><sp/>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb,</highlight></codeline> <codeline lineno="79"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>(*<sp/>err)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*arg,<sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>err));</highlight></codeline> <codeline lineno="80"><highlight class="normal"></highlight></codeline> <codeline lineno="81" refid="tcp_8h_1d1a95f09deb49cd7341d35527d6d3e2f" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>tcp_sndbuf(pcb)<sp/><sp/><sp/>((pcb)->snd_buf)</highlight></codeline> <codeline lineno="82"><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="83"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_16b6b2d7993a2b4e1ef7e0f9425a2870d" kindref="member">tcp_recved</ref><sp/><sp/>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb,<sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/>len);</highlight></codeline> <codeline lineno="84"><highlight class="normal"><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_19c6755fabde07b48e59cb98d6102fbfc" kindref="member">tcp_bind</ref><sp/><sp/><sp/><sp/>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb,<sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structip__addr" kindref="compound">ip_addr</ref><sp/>*ipaddr,</highlight></codeline> <codeline lineno="85"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/>port);</highlight></codeline> <codeline lineno="86"><highlight class="normal"><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_1e444a97cf28a0f6b644550ab77e9dfb7" kindref="member">tcp_connect</ref><sp/>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb,<sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structip__addr" kindref="compound">ip_addr</ref><sp/>*ipaddr,</highlight></codeline> <codeline lineno="87"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/>port,<sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>(*<sp/><ref refid="structtcp__pcb_10b3bfed05ffbbccfd76b5fca13d6110a" kindref="member">connected</ref>)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*arg,</highlight></codeline> <codeline lineno="88"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*tpcb,</highlight></codeline> <codeline lineno="89"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>err));</highlight></codeline> <codeline lineno="90"><highlight class="normal"></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*<sp/><ref refid="tcp_8h_1d756bca9bf3258d2df5df16fd8ed26ad" kindref="member">tcp_listen</ref><sp/><sp/>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb);</highlight></codeline> <codeline lineno="91"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_1468c2260ddb01582e966ddcf3c25ce61" kindref="member">tcp_abort</ref><sp/><sp/><sp/>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb);</highlight></codeline> <codeline lineno="92"><highlight class="normal"><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_187093e137fcc53ea82a134a3f5b33623" kindref="member">tcp_close</ref><sp/><sp/><sp/>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb);</highlight></codeline> <codeline lineno="93"><highlight class="normal"><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_1212607f48aaac1e91a2f09b7880b7c3f" kindref="member">tcp_write</ref><sp/><sp/><sp/>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*dataptr,<sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/>len,</highlight></codeline> <codeline lineno="94"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref><sp/>copy);</highlight></codeline> <codeline lineno="95"><highlight class="normal"></highlight></codeline> <codeline lineno="96"><highlight class="normal"></highlight><highlight class="comment">/*<sp/>It<sp/>is<sp/>also<sp/>possible<sp/>to<sp/>call<sp/>these<sp/>two<sp/>functions<sp/>at<sp/>the<sp/>right</highlight></codeline> <codeline lineno="97"><highlight class="comment"><sp/><sp/><sp/>intervals<sp/>(instead<sp/>of<sp/>calling<sp/>tcp_tmr()).<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="98"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_1421fb42ef919018e14ae413adfee9905" kindref="member">tcp_slowtmr</ref><sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">);</highlight></codeline> <codeline lineno="99"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_1bf446b07e52161b8a53cea07bc6c366d" kindref="member">tcp_fasttmr</ref><sp/>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">);</highlight></codeline> <codeline lineno="100"><highlight class="normal"></highlight></codeline> <codeline lineno="101"><highlight class="normal"></highlight></codeline> <codeline lineno="102"><highlight class="normal"></highlight><highlight class="comment">/*<sp/>Only<sp/>used<sp/>by<sp/>IP<sp/>to<sp/>pass<sp/>a<sp/>TCP<sp/>segment<sp/>to<sp/>TCP:<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="103"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_1e70c3c99d9dd6b07f7e11f7ba5eedcb5" kindref="member">tcp_input</ref><sp/><sp/><sp/>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structpbuf" kindref="compound">pbuf</ref><sp/>*p,<sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structnetif" kindref="compound">netif</ref><sp/>*inp);</highlight></codeline> <codeline lineno="104"><highlight class="normal"></highlight><highlight class="comment">/*<sp/>Used<sp/>within<sp/>the<sp/>TCP<sp/>code<sp/>only:<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="105"><highlight class="normal"><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="tcp_8h_10cbcc6d628f644a530daf629fa3e5f7f" kindref="member">tcp_output</ref><sp/><sp/>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb);</highlight></codeline> <codeline lineno="106"><highlight class="normal"></highlight></codeline> <codeline lineno="107"><highlight class="normal"></highlight></codeline> <codeline lineno="108"><highlight class="normal"></highlight></codeline> <codeline lineno="109"><highlight class="normal"></highlight></codeline> <codeline lineno="110" refid="tcp_8h_1af70bfea25733f085a8e5c429b597ac4" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TCP_SEQ_LT(a,b)<sp/><sp/><sp/><sp/><sp/>((Int32)((a)-(b))<sp/><<sp/>0)</highlight></codeline> <codeline lineno="111" refid="tcp_8h_167688521f2b040529431a17e4fefe0b6" refkind="member"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#define<sp/>TCP_SEQ_LEQ(a,b)<sp/><sp/><sp/><sp/>((Int32)((a)-(b))<sp/><=<sp/>0)</highlight></codeline> <codeline lineno="112" refid="tcp_8h_182a26df32c421e5eba32de8650382d59" refkind="member"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#define<sp/>TCP_SEQ_GT(a,b)<sp/><sp/><sp/><sp/><sp/>((Int32)((a)-(b))<sp/>><sp/>0)</highlight></codeline> <codeline lineno="113" refid="tcp_8h_1450d82fe0a95a217fea45e4e28064a67" refkind="member"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#define<sp/>TCP_SEQ_GEQ(a,b)<sp/><sp/><sp/><sp/>((Int32)((a)-(b))<sp/>>=<sp/>0)</highlight></codeline> <codeline lineno="114"><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="115" refid="tcp_8h_188e60aa2cf23e1c65d630701db08c743" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TCP_FIN<sp/>0x01</highlight></codeline> <codeline lineno="116" refid="tcp_8h_16020613f5062417d9811cfa837215c83" refkind="member"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#define<sp/>TCP_SYN<sp/>0x02</highlight></codeline> <codeline lineno="117" refid="tcp_8h_15ca559def464ef20d8b1f7d32f2f160d" refkind="member"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#define<sp/>TCP_RST<sp/>0x04</highlight></codeline> <codeline lineno="118" refid="tcp_8h_11320fd0006a2f70138bc2d0018dda829" refkind="member"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#define<sp/>TCP_PSH<sp/>0x08</highlight></codeline> <codeline lineno="119" refid="tcp_8h_144b3b1ab31a403ba28ec135adfcbefef" refkind="member"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#define<sp/>TCP_ACK<sp/>0x10</highlight></codeline> <codeline lineno="120" refid="tcp_8h_1c84f499cba8a02fc0e306c10b2acabf0" refkind="member"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#define<sp/>TCP_URG<sp/>0x20</highlight></codeline> <codeline lineno="121"><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="122"><highlight class="normal"></highlight><highlight class="comment">/*<sp/>Length<sp/>of<sp/>the<sp/>TCP<sp/>header,<sp/>excluding<sp/>options.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="123" refid="tcp_8h_15758db371d6daa394d178429b7c94c2a" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TCP_HLEN<sp/>20</highlight></codeline> <codeline lineno="124"><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="125" refid="tcp_8h_1d3e68a4c69b6e005e1de46275de3dd09" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TCP_TMR_INTERVAL<sp/><sp/><sp/><sp/><sp/><sp/><sp/>100<sp/><sp/></highlight><highlight class="comment">/*<sp/>The<sp/>TCP<sp/>timer<sp/>interval<sp/>in</highlight></codeline> <codeline lineno="126"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>milliseconds.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="127"><highlight class="normal"></highlight></codeline> <codeline lineno="128" refid="tcp_8h_14cb07190c160bd799c8a892229690807" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TCP_FAST_INTERVAL<sp/><sp/><sp/><sp/><sp/><sp/>200<sp/><sp/></highlight><highlight class="comment">/*<sp/>the<sp/>fine<sp/>grained<sp/>timeout<sp/>in</highlight></codeline> <codeline lineno="129"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>milliseconds<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="130" refid="tcp_8h_16adb391fb7a37611c536b53eb2864d19" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TCP_SLOW_INTERVAL<sp/><sp/><sp/><sp/><sp/><sp/>500<sp/><sp/></highlight><highlight class="comment">/*<sp/>the<sp/>coarse<sp/>grained<sp/>timeout<sp/>in</highlight></codeline> <codeline lineno="131"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>milliseconds<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="132" refid="tcp_8h_1e6585b41f836b1b8ca7c7b77d06a6aa6" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TCP_FIN_WAIT_TIMEOUT<sp/>20000<sp/></highlight><highlight class="comment">/*<sp/>milliseconds<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="133" refid="tcp_8h_1f47a5928fbbf12665409900b5debd6d2" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TCP_SYN_RCVD_TIMEOUT<sp/>20000<sp/></highlight><highlight class="comment">/*<sp/>milliseconds<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="134"><highlight class="normal"></highlight></codeline> <codeline lineno="135" refid="tcp_8h_1c190a697c41de0c8915ddc6ca00a2b23" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TCP_OOSEQ_TIMEOUT<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>6<sp/></highlight><highlight class="comment">/*<sp/>x<sp/>RTO<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="136"><highlight class="normal"></highlight></codeline> <codeline lineno="137" refid="tcp_8h_1a6a464bac77e35eaed0e9cd5bb622722" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TCP_MSL<sp/>60000<sp/><sp/></highlight><highlight class="comment">/*<sp/>The<sp/>maximum<sp/>segment<sp/>lifetime<sp/>in<sp/>microseconds<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="138"><highlight class="normal"></highlight></codeline> <codeline lineno="139" refid="structtcp__hdr" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__hdr" kindref="compound">tcp_hdr</ref><sp/>{</highlight></codeline> <codeline lineno="140"><highlight class="normal"><sp/><sp/><ref refid="structtcp__hdr_16340b2ed7263f8f4d996f4838544dfd2" kindref="member">PACK_STRUCT_FIELD</ref>(<ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/>src);</highlight></codeline> <codeline lineno="141"><highlight class="normal"><sp/><sp/><ref refid="structtcp__hdr_16340b2ed7263f8f4d996f4838544dfd2" kindref="member">PACK_STRUCT_FIELD</ref>(<ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/>dest);</highlight></codeline> <codeline lineno="142"><highlight class="normal"><sp/><sp/><ref refid="structtcp__hdr_16340b2ed7263f8f4d996f4838544dfd2" kindref="member">PACK_STRUCT_FIELD</ref>(<ref refid="types_8h_15847ea0262a5aa61eee48cbe95544a78" kindref="member">uInt32</ref><sp/>seqno);</highlight></codeline> <codeline lineno="143"><highlight class="normal"><sp/><sp/><ref refid="structtcp__hdr_16340b2ed7263f8f4d996f4838544dfd2" kindref="member">PACK_STRUCT_FIELD</ref>(<ref refid="types_8h_15847ea0262a5aa61eee48cbe95544a78" kindref="member">uInt32</ref><sp/>ackno);</highlight></codeline> <codeline lineno="144"><highlight class="normal"><sp/><sp/><ref refid="structtcp__hdr_16340b2ed7263f8f4d996f4838544dfd2" kindref="member">PACK_STRUCT_FIELD</ref>(<ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/>_offset_flags);</highlight></codeline> <codeline lineno="145"><highlight class="normal"><sp/><sp/><ref refid="structtcp__hdr_16340b2ed7263f8f4d996f4838544dfd2" kindref="member">PACK_STRUCT_FIELD</ref>(<ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/>wnd);</highlight></codeline> <codeline lineno="146"><highlight class="normal"><sp/><sp/><ref refid="structtcp__hdr_16340b2ed7263f8f4d996f4838544dfd2" kindref="member">PACK_STRUCT_FIELD</ref>(<ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/>chksum);</highlight></codeline> <codeline lineno="147"><highlight class="normal"><sp/><sp/><ref refid="structtcp__hdr_16340b2ed7263f8f4d996f4838544dfd2" kindref="member">PACK_STRUCT_FIELD</ref>(<ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/>urgp);</highlight></codeline> <codeline lineno="148"><highlight class="normal">}<sp/><ref refid="cc_8h_133623da05bb55497534c3dc26ebebeb2" kindref="member">PACK_STRUCT_STRUCT</ref>;</highlight></codeline> <codeline lineno="149"><highlight class="normal"></highlight></codeline> <codeline lineno="150" refid="tcp_8h_1403593983c0c7850ae73396e62de043e" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TCPH_OFFSET(hdr)<sp/>(NTOHS((hdr)->_offset_flags)<sp/>>><sp/>8)</highlight></codeline> <codeline lineno="151" refid="tcp_8h_17cbed647d5a3f1c3ea08217c2209470e" refkind="member"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#define<sp/>TCPH_FLAGS(hdr)<sp/>(NTOHS((hdr)->_offset_flags)<sp/>&<sp/>0xff)</highlight></codeline> <codeline lineno="152"><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="153" refid="tcp_8h_1df73b8a5787048ba91dda965f0fa547a" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TCPH_OFFSET_SET(hdr,<sp/>offset)<sp/>(hdr)->_offset_flags<sp/>=<sp/>HTONS(((offset)<sp/><<<sp/>8)<sp/>|<sp/>TCPH_FLAGS(hdr))</highlight></codeline> <codeline lineno="154" refid="tcp_8h_14b5689df8913d4f563057fd0091af7b3" refkind="member"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#define<sp/>TCPH_FLAGS_SET(hdr,<sp/>flags)<sp/>(hdr)->_offset_flags<sp/>=<sp/>HTONS((TCPH_OFFSET(hdr)<sp/><<<sp/>8)<sp/>|<sp/>(flags))</highlight></codeline> <codeline lineno="155"><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="156" refid="tcp_8h_1a878c2fe18c397e18545c1d128beebed" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TCP_TCPLEN(seg)<sp/>((seg)->len<sp/>+<sp/>((TCPH_FLAGS((seg)->tcphdr)<sp/>&<sp/>TCP_FIN<sp/>||<sp/>\</highlight></codeline> <codeline lineno="157"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>TCPH_FLAGS((seg)->tcphdr)<sp/>&<sp/>TCP_SYN)?<sp/>1:<sp/>0))</highlight></codeline> <codeline lineno="158"><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="159" refid="tcp_8h_1aad63c28ec94587c99838bd52424d634" refkind="member"><highlight class="normal"></highlight><highlight class="keyword">enum</highlight><highlight class="normal"><sp/><ref refid="tcp_8h_1aad63c28ec94587c99838bd52424d634" kindref="member">tcp_state</ref><sp/>{</highlight></codeline> <codeline lineno="160"><highlight class="normal"><sp/><sp/><ref refid="tcp_8h_1aad63c28ec94587c99838bd52424d634929f0327e17604ce9713b2a6117bd603" kindref="member">CLOSED</ref><sp/><sp/><sp/><sp/><sp/><sp/>=<sp/>0,</highlight></codeline> <codeline lineno="161"><highlight class="normal"><sp/><sp/><ref refid="tcp_8h_1aad63c28ec94587c99838bd52424d634331ec9878c0ed22e62de969d4b96b5bb" kindref="member">LISTEN</ref><sp/><sp/><sp/><sp/><sp/><sp/>=<sp/>1,</highlight></codeline> <codeline lineno="162"><highlight class="normal"><sp/><sp/><ref refid="tcp_8h_1aad63c28ec94587c99838bd52424d6343884e45cc6d937b234e2a8c2c933d7e5" kindref="member">SYN_SENT</ref><sp/><sp/><sp/><sp/>=<sp/>2,</highlight></codeline> <codeline lineno="163"><highlight class="normal"><sp/><sp/><ref refid="tcp_8h_1aad63c28ec94587c99838bd52424d6341ee0633a9749f202ccb75862d3aefc85" kindref="member">SYN_RCVD</ref><sp/><sp/><sp/><sp/>=<sp/>3,</highlight></codeline> <codeline lineno="164"><highlight class="normal"><sp/><sp/><ref refid="tcp_8h_1aad63c28ec94587c99838bd52424d63481d0d81381abb711562b19a00a4cb9af" kindref="member">ESTABLISHED</ref><sp/>=<sp/>4,</highlight></codeline> <codeline lineno="165"><highlight class="normal"><sp/><sp/><ref refid="tcp_8h_1aad63c28ec94587c99838bd52424d6342ca754767c3666fc17fe7f5bf49e7518" kindref="member">FIN_WAIT_1</ref><sp/><sp/>=<sp/>5,</highlight></codeline> <codeline lineno="166"><highlight class="normal"><sp/><sp/><ref refid="tcp_8h_1aad63c28ec94587c99838bd52424d6341ff416801732ff573184491c86ee7032" kindref="member">FIN_WAIT_2</ref><sp/><sp/>=<sp/>6,</highlight></codeline> <codeline lineno="167"><highlight class="normal"><sp/><sp/><ref refid="tcp_8h_1aad63c28ec94587c99838bd52424d634dbf32c37bc28f37e44d0fe611d341178" kindref="member">CLOSE_WAIT</ref><sp/><sp/>=<sp/>7,</highlight></codeline> <codeline lineno="168"><highlight class="normal"><sp/><sp/><ref refid="tcp_8h_1aad63c28ec94587c99838bd52424d6348ab2cae69d2b33297ab24a5818213f18" kindref="member">CLOSING</ref><sp/><sp/><sp/><sp/><sp/>=<sp/>8,</highlight></codeline> <codeline lineno="169"><highlight class="normal"><sp/><sp/><ref refid="tcp_8h_1aad63c28ec94587c99838bd52424d6341b588a108a727c1de55f818cb9ff57eb" kindref="member">LAST_ACK</ref><sp/><sp/><sp/><sp/>=<sp/>9,</highlight></codeline> <codeline lineno="170"><highlight class="normal"><sp/><sp/><ref refid="tcp_8h_1aad63c28ec94587c99838bd52424d634799374a9f3fbdfc7f7e92c0f9c5627f7" kindref="member">TIME_WAIT</ref><sp/><sp/><sp/>=<sp/>10</highlight></codeline> <codeline lineno="171"><highlight class="normal">};</highlight></codeline> <codeline lineno="172"><highlight class="normal"></highlight></codeline> <codeline lineno="173"><highlight class="normal"></highlight></codeline> <codeline lineno="174"><highlight class="normal"></highlight><highlight class="comment">/*<sp/>the<sp/>TCP<sp/>protocol<sp/>control<sp/>block<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="175" refid="structtcp__pcb" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>{</highlight></codeline> <codeline lineno="176" refid="structtcp__pcb_12aed7ffb5fb83aabe68b36f097d99260" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*<ref refid="structtcp__pcb_12aed7ffb5fb83aabe68b36f097d99260" kindref="member">next</ref>;<sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>for<sp/>the<sp/>linked<sp/>list<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="177"><highlight class="normal"></highlight></codeline> <codeline lineno="178" refid="structtcp__pcb_1f5fed23770a314eabbad7225fbf09ade" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">enum</highlight><highlight class="normal"><sp/><ref refid="tcp_8h_1aad63c28ec94587c99838bd52424d634" kindref="member">tcp_state</ref><sp/><ref refid="structtcp__pcb_1f5fed23770a314eabbad7225fbf09ade" kindref="member">state</ref>;<sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>TCP<sp/>state<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="179"><highlight class="normal"></highlight></codeline> <codeline lineno="180" refid="structtcp__pcb_1b16551509a7846960e2bb7e2347db89d" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*<ref refid="structtcp__pcb_1b16551509a7846960e2bb7e2347db89d" kindref="member">callback_arg</ref>;</highlight></codeline> <codeline lineno="181"><highlight class="normal"><sp/><sp/></highlight></codeline> <codeline lineno="182"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>Function<sp/>to<sp/>call<sp/>when<sp/>a<sp/>listener<sp/>has<sp/>been<sp/>connected.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="183"><highlight class="normal"><sp/><sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>(*<sp/>accept)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*arg,<sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*newpcb,<sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>err);</highlight></codeline> <codeline lineno="184"><highlight class="normal"></highlight></codeline> <codeline lineno="185" refid="structtcp__pcb_19f625ba7c954031759a87b09f9d3bf66" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structip__addr" kindref="compound">ip_addr</ref><sp/><ref refid="structtcp__pcb_19f625ba7c954031759a87b09f9d3bf66" kindref="member">local_ip</ref>;</highlight></codeline> <codeline lineno="186" refid="structtcp__pcb_1ea74c25566d8d5f965ec9458dc5a4f59" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/><ref refid="structtcp__pcb_1ea74c25566d8d5f965ec9458dc5a4f59" kindref="member">local_port</ref>;</highlight></codeline> <codeline lineno="187"><highlight class="normal"><sp/><sp/></highlight></codeline> <codeline lineno="188" refid="structtcp__pcb_1104f8c50bb00edff11df71133ac76fd7" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structip__addr" kindref="compound">ip_addr</ref><sp/><ref refid="structtcp__pcb_1104f8c50bb00edff11df71133ac76fd7" kindref="member">remote_ip</ref>;</highlight></codeline> <codeline lineno="189" refid="structtcp__pcb_13f779fa78a77818fc8f6210a17c52e81" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/><ref refid="structtcp__pcb_13f779fa78a77818fc8f6210a17c52e81" kindref="member">remote_port</ref>;</highlight></codeline> <codeline lineno="190"><highlight class="normal"><sp/><sp/></highlight></codeline> <codeline lineno="191"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>receiver<sp/>varables<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="192" refid="structtcp__pcb_1ad5a68f38b318f3791d7b53a684ee5af" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_15847ea0262a5aa61eee48cbe95544a78" kindref="member">uInt32</ref><sp/><ref refid="structtcp__pcb_1ad5a68f38b318f3791d7b53a684ee5af" kindref="member">rcv_nxt</ref>;<sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>next<sp/>seqno<sp/>expected<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="193" refid="structtcp__pcb_172c2f4a5b185b61aa9f26b0305bf8b44" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/><ref refid="structtcp__pcb_172c2f4a5b185b61aa9f26b0305bf8b44" kindref="member">rcv_wnd</ref>;<sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>receiver<sp/>window<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="194"><highlight class="normal"></highlight></codeline> <codeline lineno="195"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>Timers<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="196" refid="structtcp__pcb_185604804a5256842fd9986d17b718c8b" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/><ref refid="structtcp__pcb_185604804a5256842fd9986d17b718c8b" kindref="member">tmr</ref>;</highlight></codeline> <codeline lineno="197"><highlight class="normal"></highlight></codeline> <codeline lineno="198"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>Retransmission<sp/>timer.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="199" refid="structtcp__pcb_12a7cbd4af8c40222dd89f2f48d021a89" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref><sp/><ref refid="structtcp__pcb_12a7cbd4af8c40222dd89f2f48d021a89" kindref="member">rtime</ref>;</highlight></codeline> <codeline lineno="200"><highlight class="normal"><sp/><sp/></highlight></codeline> <codeline lineno="201" refid="structtcp__pcb_19abcbe1be87d924cfb9891d4a8af88eb" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/><ref refid="structtcp__pcb_19abcbe1be87d924cfb9891d4a8af88eb" kindref="member">mss</ref>;<sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>maximum<sp/>segment<sp/>size<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="202"><highlight class="normal"></highlight></codeline> <codeline lineno="203" refid="structtcp__pcb_1889ca6170adbd43cece68f2734d3e248" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref><sp/><ref refid="structtcp__pcb_1889ca6170adbd43cece68f2734d3e248" kindref="member">flags</ref>;</highlight></codeline> <codeline lineno="204" refid="tcp_8h_1b578ff02026a5e4b1bbad24ec9e9f4d5" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TF_ACK_DELAY<sp/>0x01<sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Delayed<sp/>ACK.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="205" refid="tcp_8h_1cab515db1f19653bfe55b4eb34a441a6" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TF_ACK_NOW<sp/><sp/><sp/>0x02<sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Immediate<sp/>ACK.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="206" refid="tcp_8h_1923f934772e1cb9b3efb785e627f7682" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TF_INFR<sp/><sp/><sp/><sp/><sp/><sp/>0x04<sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>In<sp/>fast<sp/>recovery.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="207" refid="tcp_8h_1c9dbdaeac3e25f5badf3a763a1b0b990" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TF_RESET<sp/><sp/><sp/><sp/><sp/>0x08<sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Connection<sp/>was<sp/>reset.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="208" refid="tcp_8h_1d911d2567fa5bb98044e271bf84e81fa" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TF_CLOSED<sp/><sp/><sp/><sp/>0x10<sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Connection<sp/>was<sp/>sucessfully<sp/>closed.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="209" refid="tcp_8h_10ecc5fb69bdd77ac66d945f7434b7431" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TF_GOT_FIN<sp/><sp/><sp/>0x20<sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Connection<sp/>was<sp/>closed<sp/>by<sp/>the<sp/>remote<sp/>end.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="210"><highlight class="normal"><sp/><sp/></highlight></codeline> <codeline lineno="211"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>RTT<sp/>estimation<sp/>variables.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="212" refid="structtcp__pcb_121f092f1e775bedc51db26cf0f0db3e4" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/><ref refid="structtcp__pcb_121f092f1e775bedc51db26cf0f0db3e4" kindref="member">rttest</ref>;<sp/></highlight><highlight class="comment">/*<sp/>RTT<sp/>estimate<sp/>in<sp/>500ms<sp/>ticks<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="213" refid="structtcp__pcb_116cbb47cd6dcb125d293d8b0e98f7a29" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_15847ea0262a5aa61eee48cbe95544a78" kindref="member">uInt32</ref><sp/><ref refid="structtcp__pcb_116cbb47cd6dcb125d293d8b0e98f7a29" kindref="member">rtseq</ref>;<sp/><sp/></highlight><highlight class="comment">/*<sp/>sequence<sp/>number<sp/>being<sp/>timed<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="214" refid="structtcp__pcb_1922ce1af61445c2ef74f351f3679823e" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_11657cdc78acd17f92fb047e02f7a5f14" kindref="member">Int32</ref><sp/><ref refid="structtcp__pcb_1603b529a927c2060bc766f6f1bcfa6b0" kindref="member">sa</ref>,<sp/><ref refid="structtcp__pcb_1922ce1af61445c2ef74f351f3679823e" kindref="member">sv</ref>;</highlight></codeline> <codeline lineno="215"><highlight class="normal"></highlight></codeline> <codeline lineno="216" refid="structtcp__pcb_1e2da68d83be475a98d4660a0ba29b04a" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/><ref refid="structtcp__pcb_1e2da68d83be475a98d4660a0ba29b04a" kindref="member">rto</ref>;<sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>retransmission<sp/>time-out<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="217" refid="structtcp__pcb_15fb9d70849fcd3d957b761906df5e76b" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref><sp/><ref refid="structtcp__pcb_15fb9d70849fcd3d957b761906df5e76b" kindref="member">nrtx</ref>;<sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>number<sp/>of<sp/>retransmissions<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="218"><highlight class="normal"></highlight></codeline> <codeline lineno="219"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>fast<sp/>retransmit/recovery<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="220" refid="structtcp__pcb_1ed6b8503e546cdb38361ad91e1751121" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_15847ea0262a5aa61eee48cbe95544a78" kindref="member">uInt32</ref><sp/><ref refid="structtcp__pcb_1ed6b8503e546cdb38361ad91e1751121" kindref="member">lastack</ref>;<sp/></highlight><highlight class="comment">/*<sp/>Highest<sp/>acknowledged<sp/>seqno.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="221" refid="structtcp__pcb_1dbd6caa217ca303666c97e9756aa650e" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref><sp/><ref refid="structtcp__pcb_1dbd6caa217ca303666c97e9756aa650e" kindref="member">dupacks</ref>;</highlight></codeline> <codeline lineno="222"><highlight class="normal"><sp/><sp/></highlight></codeline> <codeline lineno="223"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>congestion<sp/>avoidance/control<sp/>variables<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="224" refid="structtcp__pcb_104d980fcc30c880934f2ad23d4c5fed1" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/><ref refid="structtcp__pcb_104d980fcc30c880934f2ad23d4c5fed1" kindref="member">cwnd</ref>;<sp/><sp/></highlight></codeline> <codeline lineno="225" refid="structtcp__pcb_101abbb914a02ed3155ffaec498d2d923" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/><ref refid="structtcp__pcb_101abbb914a02ed3155ffaec498d2d923" kindref="member">ssthresh</ref>;</highlight></codeline> <codeline lineno="226"><highlight class="normal"></highlight></codeline> <codeline lineno="227"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>sender<sp/>variables<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="228" refid="structtcp__pcb_1251d92e99934e189404e52e592e9a457" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_15847ea0262a5aa61eee48cbe95544a78" kindref="member">uInt32</ref><sp/><ref refid="structtcp__pcb_190554b2a024a4c18fcda98cbfd2b6128" kindref="member">snd_nxt</ref>,<sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>next<sp/>seqno<sp/>to<sp/>be<sp/>sent<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="229"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structtcp__pcb_1bef219e3e817c5dd5568250c254512d0" kindref="member">snd_max</ref>,<sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Highest<sp/>seqno<sp/>sent.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="230"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structtcp__pcb_1251d92e99934e189404e52e592e9a457" kindref="member">snd_wnd</ref>,<sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>sender<sp/>window<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="231"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structtcp__pcb_19d5302ff0c5d6b868c6512714db4bf3d" kindref="member">snd_wl1</ref>,<sp/><ref refid="structtcp__pcb_19d4fd71846d118ffcfe9e747e487dbc1" kindref="member">snd_wl2</ref>,</highlight></codeline> <codeline lineno="232"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="structtcp__pcb_1e50ea29639c80998d802fad87d31631f" kindref="member">snd_lbb</ref>;<sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> <codeline lineno="233"><highlight class="normal"></highlight></codeline> <codeline lineno="234" refid="structtcp__pcb_15c8c8b59a296f07423f8c54958729020" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/><ref refid="structtcp__pcb_15c8c8b59a296f07423f8c54958729020" kindref="member">snd_buf</ref>;<sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Avaliable<sp/>buffer<sp/>space<sp/>for<sp/>sending.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="235" refid="structtcp__pcb_1725706c6fca36ee6cef7c63f4e60724e" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref><sp/><ref refid="structtcp__pcb_1725706c6fca36ee6cef7c63f4e60724e" kindref="member">snd_queuelen</ref>;</highlight></codeline> <codeline lineno="236"><highlight class="normal"></highlight></codeline> <codeline lineno="237"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>Function<sp/>to<sp/>be<sp/>called<sp/>when<sp/>more<sp/>send<sp/>buffer<sp/>space<sp/>is<sp/>avaliable.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="238"><highlight class="normal"><sp/><sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>(*<sp/>sent)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*arg,<sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb,<sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/>space);</highlight></codeline> <codeline lineno="239" refid="structtcp__pcb_1079b95201fde97978972ec2f087441ce" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/><ref refid="structtcp__pcb_1079b95201fde97978972ec2f087441ce" kindref="member">acked</ref>;</highlight></codeline> <codeline lineno="240"><highlight class="normal"><sp/><sp/></highlight></codeline> <codeline lineno="241"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>Function<sp/>to<sp/>be<sp/>called<sp/>when<sp/>(in-sequence)<sp/>data<sp/>has<sp/>arrived.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="242"><highlight class="normal"><sp/><sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>(*<sp/>recv)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*arg,<sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb,<sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structpbuf" kindref="compound">pbuf</ref><sp/>*p,<sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>err);</highlight></codeline> <codeline lineno="243" refid="structtcp__pcb_14d546e30555666016e85eaf153a5d8ad" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structpbuf" kindref="compound">pbuf</ref><sp/>*<ref refid="structtcp__pcb_14d546e30555666016e85eaf153a5d8ad" kindref="member">recv_data</ref>;</highlight></codeline> <codeline lineno="244"><highlight class="normal"></highlight></codeline> <codeline lineno="245"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>Function<sp/>to<sp/>be<sp/>called<sp/>when<sp/>a<sp/>connection<sp/>has<sp/>been<sp/>set<sp/>up.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="246"><highlight class="normal"><sp/><sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>(*<sp/>connected)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*arg,<sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb,<sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>err);</highlight></codeline> <codeline lineno="247"><highlight class="normal"></highlight></codeline> <codeline lineno="248"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>Function<sp/>which<sp/>is<sp/>called<sp/>periodically.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="249"><highlight class="normal"><sp/><sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>(*<sp/>poll)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*arg,<sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb);</highlight></codeline> <codeline lineno="250"><highlight class="normal"></highlight></codeline> <codeline lineno="251"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>Function<sp/>to<sp/>be<sp/>called<sp/>whenever<sp/>a<sp/>fatal<sp/>error<sp/>occurs.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="252"><highlight class="normal"><sp/><sp/>void<sp/>(*<sp/><ref refid="structtcp__pcb_1db13ee7fe9ca8475dc7eb17fecdb4d1b" kindref="member">errf</ref>)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*arg,<sp/><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/>err);</highlight></codeline> <codeline lineno="253"><highlight class="normal"><sp/><sp/></highlight></codeline> <codeline lineno="254" refid="structtcp__pcb_1c7cc178f2182a76f91add42a6052e185" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref><sp/><ref refid="structtcp__pcb_1c7cc178f2182a76f91add42a6052e185" kindref="member">polltmr</ref>,<sp/><ref refid="structtcp__pcb_126020b736baa56b9604fc81a1e24868d" kindref="member">pollinterval</ref>;</highlight></codeline> <codeline lineno="255"><highlight class="normal"><sp/><sp/></highlight></codeline> <codeline lineno="256"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>These<sp/>are<sp/>ordered<sp/>by<sp/>sequence<sp/>number:<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="257" refid="structtcp__pcb_1487f784367bacf0f826fc91a2c04bfdd" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__seg" kindref="compound">tcp_seg</ref><sp/>*<ref refid="structtcp__pcb_1487f784367bacf0f826fc91a2c04bfdd" kindref="member">unsent</ref>;<sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Unsent<sp/>(queued)<sp/>segments.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="258" refid="structtcp__pcb_19e6ed24ec0f8e5855c3b34fa361bfd5a" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__seg" kindref="compound">tcp_seg</ref><sp/>*<ref refid="structtcp__pcb_19e6ed24ec0f8e5855c3b34fa361bfd5a" kindref="member">unacked</ref>;<sp/><sp/></highlight><highlight class="comment">/*<sp/>Sent<sp/>but<sp/>unacknowledged<sp/>segments.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="259"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>TCP_QUEUE_OOSEQ<sp/><sp/></highlight></codeline> <codeline lineno="260"><highlight class="preprocessor"></highlight><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__seg" kindref="compound">tcp_seg</ref><sp/>*ooseq;<sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Received<sp/>out<sp/>of<sp/>sequence<sp/>segments.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="261"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>TCP_QUEUE_OOSEQ<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="262"><highlight class="normal"></highlight></codeline> <codeline lineno="263"><highlight class="normal">};</highlight></codeline> <codeline lineno="264"><highlight class="normal"></highlight></codeline> <codeline lineno="265" refid="structtcp__pcb__listen" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb__listen" kindref="compound">tcp_pcb_listen</ref><sp/>{<sp/><sp/></highlight></codeline> <codeline lineno="266" refid="structtcp__pcb__listen_10483d0c2a2758dcef18689be2efbdf34" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb__listen" kindref="compound">tcp_pcb_listen</ref><sp/>*<ref refid="structtcp__pcb__listen_10483d0c2a2758dcef18689be2efbdf34" kindref="member">next</ref>;<sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>for<sp/>the<sp/>linked<sp/>list<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="267"><highlight class="normal"><sp/><sp/></highlight></codeline> <codeline lineno="268" refid="structtcp__pcb__listen_11601c85dd2aa3f2e183a9653b2fcbfb0" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">enum</highlight><highlight class="normal"><sp/><ref refid="tcp_8h_1aad63c28ec94587c99838bd52424d634" kindref="member">tcp_state</ref><sp/><ref refid="structtcp__pcb__listen_11601c85dd2aa3f2e183a9653b2fcbfb0" kindref="member">state</ref>;<sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>TCP<sp/>state<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="269"><highlight class="normal"></highlight></codeline> <codeline lineno="270" refid="structtcp__pcb__listen_1d6c5b31cadf89f218ce6a99e4349badd" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*<ref refid="structtcp__pcb__listen_1d6c5b31cadf89f218ce6a99e4349badd" kindref="member">callback_arg</ref>;</highlight></codeline> <codeline lineno="271"><highlight class="normal"><sp/><sp/></highlight></codeline> <codeline lineno="272"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">/*<sp/>Function<sp/>to<sp/>call<sp/>when<sp/>a<sp/>listener<sp/>has<sp/>been<sp/>connected.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="273"><highlight class="normal"><sp/><sp/>void<sp/>(*<sp/>accept)(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*arg,<sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*newpcb);</highlight></codeline> <codeline lineno="274"><highlight class="normal"></highlight></codeline> <codeline lineno="275" refid="structtcp__pcb__listen_10445896db7b8677e8e4bc437308b1270" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structip__addr" kindref="compound">ip_addr</ref><sp/><ref refid="structtcp__pcb__listen_10445896db7b8677e8e4bc437308b1270" kindref="member">local_ip</ref>;</highlight></codeline> <codeline lineno="276" refid="structtcp__pcb__listen_1ade628d2846221f386d5eca50d07ad32" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/><ref refid="structtcp__pcb__listen_1ade628d2846221f386d5eca50d07ad32" kindref="member">local_port</ref>;</highlight></codeline> <codeline lineno="277"><highlight class="normal">};</highlight></codeline> <codeline lineno="278"><highlight class="normal"></highlight></codeline> <codeline lineno="279"><highlight class="normal"></highlight><highlight class="comment">/*<sp/>This<sp/>structure<sp/>is<sp/>used<sp/>to<sp/>repressent<sp/>TCP<sp/>segments.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="280" refid="structtcp__seg" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__seg" kindref="compound">tcp_seg</ref><sp/>{</highlight></codeline> <codeline lineno="281" refid="structtcp__seg_13e1479b94a15c20a26bd0f0592cd5601" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__seg" kindref="compound">tcp_seg</ref><sp/>*<ref refid="structtcp__seg_13e1479b94a15c20a26bd0f0592cd5601" kindref="member">next</ref>;<sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>used<sp/>when<sp/>putting<sp/>segements<sp/>on<sp/>a<sp/>queue<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="282" refid="structtcp__seg_13a0a6be553eb5cd5c641f519d3fa7f2f" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structpbuf" kindref="compound">pbuf</ref><sp/>*<ref refid="structtcp__seg_13a0a6be553eb5cd5c641f519d3fa7f2f" kindref="member">p</ref>;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>buffer<sp/>containing<sp/>data<sp/>+<sp/>TCP<sp/>header<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="283" refid="structtcp__seg_1ba9711261d2fb72c6ea14955f23de4f2" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*<ref refid="structtcp__seg_1ba9711261d2fb72c6ea14955f23de4f2" kindref="member">dataptr</ref>;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>pointer<sp/>to<sp/>the<sp/>TCP<sp/>data<sp/>in<sp/>the<sp/>pbuf<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="284" refid="structtcp__seg_1cd56b9873ed54d5c717cff398765357d" refkind="member"><highlight class="normal"><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/><ref refid="structtcp__seg_1cd56b9873ed54d5c717cff398765357d" kindref="member">len</ref>;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>the<sp/>TCP<sp/>length<sp/>of<sp/>this<sp/>segment<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="285" refid="structtcp__seg_1699247f83271b1ca4434a30a376680ab" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__hdr" kindref="compound">tcp_hdr</ref><sp/>*<ref refid="structtcp__seg_1699247f83271b1ca4434a30a376680ab" kindref="member">tcphdr</ref>;<sp/><sp/></highlight><highlight class="comment">/*<sp/>the<sp/>TCP<sp/>header<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="286"><highlight class="normal">};</highlight></codeline> <codeline lineno="287"><highlight class="normal"></highlight></codeline> <codeline lineno="288"><highlight class="normal"></highlight><highlight class="comment">/*<sp/>Internal<sp/>functions<sp/>and<sp/>global<sp/>variables:<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="289"><highlight class="normal"></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*<ref refid="tcp_8h_18dc15d72a4f385846d924592da33c879" kindref="member">tcp_pcb_copy</ref>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb);</highlight></codeline> <codeline lineno="290"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="tcp_8h_144fc672b9d14a65e61040707c45302ba" kindref="member">tcp_pcb_purge</ref>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb);</highlight></codeline> <codeline lineno="291"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="tcp_8h_1aaef096f6a03bf5b778329bb66ee06f6" kindref="member">tcp_pcb_remove</ref>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>**pcblist,<sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb);</highlight></codeline> <codeline lineno="292"><highlight class="normal"></highlight></codeline> <codeline lineno="293"><highlight class="normal"><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref><sp/><ref refid="tcp_8h_12a7a22b8d118eb3b4c9682fb7cf455ef" kindref="member">tcp_segs_free</ref>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__seg" kindref="compound">tcp_seg</ref><sp/>*seg);</highlight></codeline> <codeline lineno="294"><highlight class="normal"><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref><sp/><ref refid="tcp_8h_11ea20aae291bb7cd0928c816124ecbac" kindref="member">tcp_seg_free</ref>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__seg" kindref="compound">tcp_seg</ref><sp/>*seg);</highlight></codeline> <codeline lineno="295"><highlight class="normal"></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__seg" kindref="compound">tcp_seg</ref><sp/>*<ref refid="tcp_8h_1569d79451d2570e4ef406775725ef6ef" kindref="member">tcp_seg_copy</ref>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__seg" kindref="compound">tcp_seg</ref><sp/>*seg);</highlight></codeline> <codeline lineno="296"><highlight class="normal"></highlight></codeline> <codeline lineno="297" refid="tcp_8h_1ccaf5aff579a6f08407d691bc92d765d" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>tcp_ack(pcb)<sp/><sp/><sp/><sp/><sp/>if((pcb)->flags<sp/>&<sp/>TF_ACK_DELAY)<sp/>{<sp/>\</highlight></codeline> <codeline lineno="298"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>(pcb)->flags<sp/>|=<sp/>TF_ACK_NOW;<sp/>\</highlight></codeline> <codeline lineno="299"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>tcp_output(pcb);<sp/>\</highlight></codeline> <codeline lineno="300"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/>else<sp/>{<sp/>\</highlight></codeline> <codeline lineno="301"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>(pcb)->flags<sp/>|=<sp/>TF_ACK_DELAY;<sp/>\</highlight></codeline> <codeline lineno="302"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> <codeline lineno="303"><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="304" refid="tcp_8h_1d80dc16443af0e5d6dbe5de686274424" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>tcp_ack_now(pcb)<sp/>(pcb)->flags<sp/>|=<sp/>TF_ACK_NOW;<sp/>\</highlight></codeline> <codeline lineno="305"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>tcp_output(pcb)</highlight></codeline> <codeline lineno="306"><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="307"><highlight class="normal"><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/><ref refid="tcp_8h_1bbfc0df797ca8d52b73703e3a8e5e030" kindref="member">tcp_send_ctrl</ref>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb,<sp/><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref><sp/>flags);</highlight></codeline> <codeline lineno="308"><highlight class="normal"><ref refid="err_8h_1b7190f3da5c85931fc059e0312bc1407" kindref="member">err_t</ref><sp/><ref refid="tcp_8h_1598c918fc63361644d1bd10bb994cfc6" kindref="member">tcp_enqueue</ref>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb,<sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*<ref refid="structtcp__seg_1ba9711261d2fb72c6ea14955f23de4f2" kindref="member">dataptr</ref>,<sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/><ref refid="structtcp__seg_1cd56b9873ed54d5c717cff398765357d" kindref="member">len</ref>,</highlight></codeline> <codeline lineno="309"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref><sp/>flags,<sp/><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref><sp/>copy,</highlight></codeline> <codeline lineno="310"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref><sp/>*optdata,<sp/><ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref><sp/>optlen);</highlight></codeline> <codeline lineno="311"><highlight class="normal"></highlight></codeline> <codeline lineno="312"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="tcp_8h_131749219b8aeb4957f7c350f4427a839" kindref="member">tcp_rexmit_seg</ref>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*pcb,<sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__seg" kindref="compound">tcp_seg</ref><sp/>*seg);</highlight></codeline> <codeline lineno="313"><highlight class="normal"></highlight></codeline> <codeline lineno="314"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="tcp_8h_1c34efb2d4b95acff840c84d22d59fb4c" kindref="member">tcp_rst</ref>(<ref refid="types_8h_15847ea0262a5aa61eee48cbe95544a78" kindref="member">uInt32</ref><sp/>seqno,<sp/><ref refid="types_8h_15847ea0262a5aa61eee48cbe95544a78" kindref="member">uInt32</ref><sp/>ackno,</highlight></codeline> <codeline lineno="315"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structip__addr" kindref="compound">ip_addr</ref><sp/>*local_ip,<sp/></highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structip__addr" kindref="compound">ip_addr</ref><sp/>*remote_ip,</highlight></codeline> <codeline lineno="316"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/>local_port,<sp/><ref refid="types_8h_13b65128d2644e9b80cec9a69bfa7e094" kindref="member">uInt16</ref><sp/>remote_port);</highlight></codeline> <codeline lineno="317"><highlight class="normal"></highlight></codeline> <codeline lineno="318"><highlight class="normal"><ref refid="types_8h_15847ea0262a5aa61eee48cbe95544a78" kindref="member">uInt32</ref><sp/><ref refid="tcp_8h_1f2d1b7b0daa5d9c05d1bb8082f8264eb" kindref="member">tcp_next_iss</ref>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">);</highlight></codeline> <codeline lineno="319"><highlight class="normal"></highlight></codeline> <codeline lineno="320"><highlight class="normal"></highlight><highlight class="keyword">extern</highlight><highlight class="normal"><sp/><ref refid="types_8h_15847ea0262a5aa61eee48cbe95544a78" kindref="member">uInt32</ref><sp/><ref refid="tcp_8h_189c4a68ace479c2362a2821616e2c15a" kindref="member">tcp_ticks</ref>;</highlight></codeline> <codeline lineno="321"><highlight class="normal"></highlight></codeline> <codeline lineno="322"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>TCP_DEBUG<sp/>||<sp/>TCP_INPUT_DEBUG<sp/>||<sp/>TCP_OUTPUT_DEBUG</highlight></codeline> <codeline lineno="323"><highlight class="preprocessor"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>tcp_debug_print(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/><ref refid="structtcp__hdr" kindref="compound">tcp_hdr</ref><sp/>*<ref refid="structtcp__seg_1699247f83271b1ca4434a30a376680ab" kindref="member">tcphdr</ref>);</highlight></codeline> <codeline lineno="324"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>tcp_debug_print_flags(<ref refid="types_8h_1a4e0f27a9aca905e340c06d2dcae843c" kindref="member">uInt8</ref><sp/>flags);</highlight></codeline> <codeline lineno="325"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>tcp_debug_print_state(</highlight><highlight class="keyword">enum</highlight><highlight class="normal"><sp/><ref refid="tcp_8h_1aad63c28ec94587c99838bd52424d634" kindref="member">tcp_state</ref><sp/>s);</highlight></codeline> <codeline lineno="326"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>tcp_debug_print_pcbs(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">);</highlight></codeline> <codeline lineno="327"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="tcp_8h_199eac823d00bd1192bc65244e7f0fa8c" kindref="member">tcp_pcbs_sane</ref>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">);</highlight></codeline> <codeline lineno="328"><highlight class="normal"></highlight><highlight class="preprocessor">#else</highlight></codeline> <codeline lineno="329" refid="tcp_8h_199eac823d00bd1192bc65244e7f0fa8c" refkind="member"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#define<sp/>tcp_pcbs_sane()<sp/>1</highlight></codeline> <codeline lineno="330"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>TCP_DEBUG<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="331"><highlight class="normal"></highlight></codeline> <codeline lineno="332"><highlight class="normal"></highlight></codeline> <codeline lineno="333"><highlight class="normal"></highlight><highlight class="comment">/*<sp/>The<sp/>TCP<sp/>PCB<sp/>lists.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="334"><highlight class="normal"></highlight><highlight class="keyword">extern</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb__listen" kindref="compound">tcp_pcb_listen</ref><sp/>*<ref refid="tcp_8h_1b7b955629fe5e7d94321580f969cf076" kindref="member">tcp_listen_pcbs</ref>;<sp/><sp/></highlight><highlight class="comment">/*<sp/>List<sp/>of<sp/>all<sp/>TCP<sp/>PCBs<sp/>in<sp/>LISTEN<sp/>state.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="335"><highlight class="normal"></highlight><highlight class="keyword">extern</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*<ref refid="tcp_8h_178c09dbae67ccc06b659d9f1a388f911" kindref="member">tcp_active_pcbs</ref>;<sp/><sp/></highlight><highlight class="comment">/*<sp/>List<sp/>of<sp/>all<sp/>TCP<sp/>PCBs<sp/>that<sp/>are<sp/>in<sp/>a</highlight></codeline> <codeline lineno="336"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>state<sp/>in<sp/>which<sp/>they<sp/>accept<sp/>or<sp/>send</highlight></codeline> <codeline lineno="337"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>data.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="338"><highlight class="normal"></highlight><highlight class="keyword">extern</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*<ref refid="tcp_8h_19a522a66c5e1f1a4e28fe7a672cc64e3" kindref="member">tcp_tw_pcbs</ref>;<sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>List<sp/>of<sp/>all<sp/>TCP<sp/>PCBs<sp/>in<sp/>TIME-WAIT.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="339"><highlight class="normal"></highlight></codeline> <codeline lineno="340"><highlight class="normal"></highlight><highlight class="keyword">extern</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structtcp__pcb" kindref="compound">tcp_pcb</ref><sp/>*<ref refid="tcp_8h_1d5ba0fd03d297b097808b45437face0c" kindref="member">tcp_tmp_pcb</ref>;<sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Only<sp/>used<sp/>for<sp/>temporary<sp/>storage.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="341"><highlight class="normal"></highlight></codeline> <codeline lineno="342"><highlight class="normal"></highlight><highlight class="comment">/*<sp/>Axoims<sp/>about<sp/>the<sp/>above<sp/>lists:<sp/><sp/><sp/></highlight></codeline> <codeline lineno="343"><highlight class="comment"><sp/><sp/><sp/>1)<sp/>Every<sp/>TCP<sp/>PCB<sp/>that<sp/>is<sp/>not<sp/>CLOSED<sp/>is<sp/>in<sp/>one<sp/>of<sp/>the<sp/>lists.</highlight></codeline> <codeline lineno="344"><highlight class="comment"><sp/><sp/><sp/>2)<sp/>A<sp/>PCB<sp/>is<sp/>only<sp/>in<sp/>one<sp/>of<sp/>the<sp/>lists.</highlight></codeline> <codeline lineno="345"><highlight class="comment"><sp/><sp/><sp/>3)<sp/>All<sp/>PCBs<sp/>in<sp/>the<sp/>tcp_listen_pcbs<sp/>list<sp/>is<sp/>in<sp/>LISTEN<sp/>state.</highlight></codeline> <codeline lineno="346"><highlight class="comment"><sp/><sp/><sp/>4)<sp/>All<sp/>PCBs<sp/>in<sp/>the<sp/>tcp_tw_pcbs<sp/>list<sp/>is<sp/>in<sp/>TIME-WAIT<sp/>state.</highlight></codeline> <codeline lineno="347"><highlight class="comment">*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="348"><highlight class="normal"></highlight></codeline> <codeline lineno="349"><highlight class="normal"></highlight><highlight class="comment">/*<sp/>Define<sp/>two<sp/>macros,<sp/>TCP_REG<sp/>and<sp/>TCP_RMV<sp/>that<sp/>registers<sp/>a<sp/>TCP<sp/>PCB</highlight></codeline> <codeline lineno="350"><highlight class="comment"><sp/><sp/><sp/>with<sp/>a<sp/>PCB<sp/>list<sp/>or<sp/>removes<sp/>a<sp/>PCB<sp/>from<sp/>a<sp/>list,<sp/>respectively.<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="351"><highlight class="normal"></highlight><highlight class="preprocessor">#ifdef<sp/>LWIP_DEBUG</highlight></codeline> <codeline lineno="352"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#define<sp/>TCP_REG(pcbs,<sp/>npcb)<sp/>do<sp/>{\</highlight></codeline> <codeline lineno="353"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>DEBUGF(TCP_DEBUG,<sp/>("TCP_REG<sp/>%p<sp/>local<sp/>port<sp/>%d\n",<sp/>npcb,<sp/>npcb->local_port));<sp/>\</highlight></codeline> <codeline lineno="354"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>for(tcp_tmp_pcb<sp/>=<sp/>*pcbs;<sp/>\</highlight></codeline> <codeline lineno="355"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>tcp_tmp_pcb<sp/>!=<sp/>NULL;<sp/>\</highlight></codeline> <codeline lineno="356"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>tcp_tmp_pcb<sp/>=<sp/>tcp_tmp_pcb->next)<sp/>{<sp/>\</highlight></codeline> <codeline lineno="357"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ASSERT("TCP_REG:<sp/>already<sp/>registered\n",<sp/>tcp_tmp_pcb<sp/>!=<sp/>npcb);<sp/>\</highlight></codeline> <codeline lineno="358"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/>\</highlight></codeline> <codeline lineno="359"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ASSERT("TCP_REG:<sp/>pcb->state<sp/>!=<sp/>CLOSED",<sp/>npcb->state<sp/>!=<sp/>CLOSED);<sp/>\</highlight></codeline> <codeline lineno="360"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>npcb->next<sp/>=<sp/>*pcbs;<sp/>\</highlight></codeline> <codeline lineno="361"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ASSERT("TCP_REG:<sp/>npcb->next<sp/>!=<sp/>npcb",<sp/>npcb->next<sp/>!=<sp/>npcb);<sp/>\</highlight></codeline> <codeline lineno="362"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*pcbs<sp/>=<sp/>npcb;<sp/>\</highlight></codeline> <codeline lineno="363"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ASSERT("TCP_RMV:<sp/>tcp_pcbs<sp/>sane",<sp/>tcp_pcbs_sane());<sp/>\</highlight></codeline> <codeline lineno="364"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/>while(0)</highlight></codeline> <codeline lineno="365"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#define<sp/>TCP_RMV(pcbs,<sp/>npcb)<sp/>do<sp/>{<sp/>\</highlight></codeline> <codeline lineno="366"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ASSERT("TCP_RMV:<sp/>pcbs<sp/>!=<sp/>NULL",<sp/>*pcbs<sp/>!=<sp/>NULL);<sp/>\</highlight></codeline> <codeline lineno="367"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>DEBUGF(TCP_DEBUG,<sp/>("TCP_RMV:<sp/>removing<sp/>%p<sp/>from<sp/>%p\n",<sp/>npcb,<sp/>*pcbs));<sp/>\</highlight></codeline> <codeline lineno="368"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if(*pcbs<sp/>==<sp/>npcb)<sp/>{<sp/>\</highlight></codeline> <codeline lineno="369"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*pcbs<sp/>=<sp/>(*pcbs)->next;<sp/>\</highlight></codeline> <codeline lineno="370"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/>else<sp/>for(tcp_tmp_pcb<sp/>=<sp/>*pcbs;<sp/>tcp_tmp_pcb<sp/>!=<sp/>NULL;<sp/>tcp_tmp_pcb<sp/>=<sp/>tcp_tmp_pcb->next)<sp/>{<sp/>\</highlight></codeline> <codeline lineno="371"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if(tcp_tmp_pcb->next<sp/>!=<sp/>NULL<sp/>&&<sp/>tcp_tmp_pcb->next<sp/>==<sp/>npcb)<sp/>{<sp/>\</highlight></codeline> <codeline lineno="372"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>tcp_tmp_pcb->next<sp/>=<sp/>npcb->next;<sp/>\</highlight></codeline> <codeline lineno="373"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>break;<sp/>\</highlight></codeline> <codeline lineno="374"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/>\</highlight></codeline> <codeline lineno="375"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/>\</highlight></codeline> <codeline lineno="376"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>npcb->next<sp/>=<sp/>NULL;<sp/>\</highlight></codeline> <codeline lineno="377"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ASSERT("TCP_RMV:<sp/>tcp_pcbs<sp/>sane",<sp/>tcp_pcbs_sane());<sp/>\</highlight></codeline> <codeline lineno="378"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>DEBUGF(TCP_DEBUG,<sp/>("TCP_RMV:<sp/>removed<sp/>%p<sp/>from<sp/>%p\n",<sp/>npcb,<sp/>*pcbs));<sp/>\</highlight></codeline> <codeline lineno="379"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/>while(0)</highlight></codeline> <codeline lineno="380"><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="381"><highlight class="normal"></highlight><highlight class="preprocessor">#else<sp/></highlight><highlight class="comment">/*<sp/>LWIP_DEBUG<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="382" refid="tcp_8h_150cbae9c0438222ed92ed8cd470d3cb0" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>TCP_REG(pcbs,<sp/>npcb)<sp/>do<sp/>{<sp/>\</highlight></codeline> <codeline lineno="383"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>npcb->next<sp/>=<sp/>*pcbs;<sp/>\</highlight></codeline> <codeline lineno="384"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*pcbs<sp/>=<sp/>npcb;<sp/>\</highlight></codeline> <codeline lineno="385"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/>while(0)</highlight></codeline> <codeline lineno="386" refid="tcp_8h_1340e27f5b99231f7a706959ab3be3b59" refkind="member"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#define<sp/>TCP_RMV(pcbs,<sp/>npcb)<sp/>do<sp/>{<sp/>\</highlight></codeline> <codeline lineno="387"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if(*pcbs<sp/>==<sp/>npcb)<sp/>{<sp/>\</highlight></codeline> <codeline lineno="388"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*pcbs<sp/>=<sp/>(*pcbs)->next;<sp/>\</highlight></codeline> <codeline lineno="389"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/>else<sp/>for(tcp_tmp_pcb<sp/>=<sp/>*pcbs;<sp/>tcp_tmp_pcb<sp/>!=<sp/>NULL;<sp/>tcp_tmp_pcb<sp/>=<sp/>tcp_tmp_pcb->next)<sp/>{<sp/>\</highlight></codeline> <codeline lineno="390"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if(tcp_tmp_pcb->next<sp/>!=<sp/>NULL<sp/>&&<sp/>tcp_tmp_pcb->next<sp/>==<sp/>npcb)<sp/>{<sp/>\</highlight></codeline> <codeline lineno="391"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>tcp_tmp_pcb->next<sp/>=<sp/>npcb->next;<sp/>\</highlight></codeline> <codeline lineno="392"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>break;<sp/>\</highlight></codeline> <codeline lineno="393"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/>\</highlight></codeline> <codeline lineno="394"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/>\</highlight></codeline> <codeline lineno="395"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>npcb->next<sp/>=<sp/>NULL;<sp/>\</highlight></codeline> <codeline lineno="396"><highlight class="preprocessor"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/>while(0)</highlight></codeline> <codeline lineno="397"><highlight class="preprocessor"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>LWIP_DEBUG<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="398"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/></highlight><highlight class="comment">/*<sp/>__LWIP_TCP_H__<sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="399"><highlight class="normal"></highlight></codeline> <codeline lineno="400"><highlight class="normal"></highlight></codeline> <codeline lineno="401"><highlight class="normal"></highlight></codeline> </programlisting> <location file="/usr/home/reddawg/source/ubix2/src/sys/include/net/tcp.h"/> </compounddef> </doxygen>