/[lwip]/lwip/src/core/tcp.c
ViewVC logotype

Diff of /lwip/src/core/tcp.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.31.2.9 by jani, Thu Nov 13 14:39:44 2003 UTC revision 1.31.2.10 by likewise, Fri Nov 14 09:42:51 2003 UTC
# Line 36  Line 36 
36   *   *
37   */   */
38    
39  /*-----------------------------------------------------------------------------------*/  
40  /* tcp.c  /* tcp.c
41   *   *
42   * This file contains common functions for the TCP implementation, such as functinos   * This file contains common functions for the TCP implementation, such as functinos
# Line 44  Line 44 
44   * related to input and output is found in tcp_input.c and tcp_output.c respectively.   * related to input and output is found in tcp_input.c and tcp_output.c respectively.
45   *   *
46   */   */
47  /*-----------------------------------------------------------------------------------*/  
48    
49    
50  #include "lwip/opt.h"  #include "lwip/opt.h"
# Line 74  static u8_t tcp_timer; Line 74  static u8_t tcp_timer;
74    
75  static u16_t tcp_new_port(void);  static u16_t tcp_new_port(void);
76    
77  /*-----------------------------------------------------------------------------------*/  
78  /*  /*
79   * tcp_init():   * tcp_init():
80   *   *
81   * Initializes the TCP layer.   * Initializes the TCP layer.
82   */   */
83  /*-----------------------------------------------------------------------------------*/  
84  void  void
85  tcp_init(void)  tcp_init(void)
86  {  {
# Line 95  tcp_init(void) Line 95  tcp_init(void)
95    tcp_timer = 0;    tcp_timer = 0;
96        
97  }  }
98  /*-----------------------------------------------------------------------------------*/  
99  /*  /*
100   * tcp_tmr():   * tcp_tmr():
101   *   *
102   * Called periodically to dispatch TCP timers.   * Called periodically to dispatch TCP timers.
103   *   *
104   */   */
105  /*-----------------------------------------------------------------------------------*/  
106  void  void
107  tcp_tmr(void)  tcp_tmr(void)
108  {  {
# Line 115  tcp_tmr(void) Line 115  tcp_tmr(void)
115      tcp_slowtmr();      tcp_slowtmr();
116    }    }
117  }  }
118  /*-----------------------------------------------------------------------------------*/  
119  /*  /*
120   * tcp_close():   * tcp_close():
121   *   *
122   * Closes the connection held by the PCB.   * Closes the connection held by the PCB.
123   *   *
124   */   */
125  /*-----------------------------------------------------------------------------------*/  
126  err_t  err_t
127  tcp_close(struct tcp_pcb *pcb)  tcp_close(struct tcp_pcb *pcb)
128  {  {
# Line 176  tcp_close(struct tcp_pcb *pcb) Line 176  tcp_close(struct tcp_pcb *pcb)
176    }    }
177    return err;    return err;
178  }  }
179  /*-----------------------------------------------------------------------------------*/  
180  /*  /*
181   * tcp_abort()   * tcp_abort()
182   *   *
# Line 185  tcp_close(struct tcp_pcb *pcb) Line 185  tcp_close(struct tcp_pcb *pcb)
185   * killed because of shortage of memory.   * killed because of shortage of memory.
186   *   *
187   */   */
188  /*-----------------------------------------------------------------------------------*/  
189  void  void
190  tcp_abort(struct tcp_pcb *pcb)  tcp_abort(struct tcp_pcb *pcb)
191  {  {
# Line 233  tcp_abort(struct tcp_pcb *pcb) Line 233  tcp_abort(struct tcp_pcb *pcb)
233      tcp_rst(seqno, ackno, &local_ip, &remote_ip, local_port, remote_port);      tcp_rst(seqno, ackno, &local_ip, &remote_ip, local_port, remote_port);
234    }    }
235  }  }
236  /*-----------------------------------------------------------------------------------*/  
237  /*  /*
238   * tcp_bind():   * tcp_bind():
239   *   *
# Line 242  tcp_abort(struct tcp_pcb *pcb) Line 242  tcp_abort(struct tcp_pcb *pcb)
242   * the outgoing network interface is used instead.   * the outgoing network interface is used instead.
243   *   *
244   */   */
245  /*-----------------------------------------------------------------------------------*/  
246  err_t  err_t
247  tcp_bind(struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t port)  tcp_bind(struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t port)
248  {  {
# Line 390  tcp_accept_null(void *arg, struct tcp_pc Line 390  tcp_accept_null(void *arg, struct tcp_pc
390    return ERR_ABRT;    return ERR_ABRT;
391  }  }
392  #endif /* LWIP_CALLBACK_API */  #endif /* LWIP_CALLBACK_API */
393  /*-----------------------------------------------------------------------------------*/  
394  /*  /*
395   * tcp_listen():   * tcp_listen():
396   *   *
# Line 400  tcp_accept_null(void *arg, struct tcp_pc Line 400  tcp_accept_null(void *arg, struct tcp_pc
400   * connection to LISTEN is an irreversible process.   * connection to LISTEN is an irreversible process.
401   *   *
402   */   */
403  /*-----------------------------------------------------------------------------------*/  
404  struct tcp_pcb *  struct tcp_pcb *
405  tcp_listen(struct tcp_pcb *pcb)  tcp_listen(struct tcp_pcb *pcb)
406  {  {
# Line 429  tcp_listen(struct tcp_pcb *pcb) Line 429  tcp_listen(struct tcp_pcb *pcb)
429    TCP_REG(&tcp_listen_pcbs, lpcb);    TCP_REG(&tcp_listen_pcbs, lpcb);
430    return (struct tcp_pcb *)lpcb;    return (struct tcp_pcb *)lpcb;
431  }  }
432  /*-----------------------------------------------------------------------------------*/  
433  /*  /*
434   * tcp_recved():   * tcp_recved():
435   *   *
# Line 438  tcp_listen(struct tcp_pcb *pcb) Line 438  tcp_listen(struct tcp_pcb *pcb)
438   * when the data has been processed.   * when the data has been processed.
439   *   *
440   */   */
441  /*-----------------------------------------------------------------------------------*/  
442  void  void
443  tcp_recved(struct tcp_pcb *pcb, u16_t len)  tcp_recved(struct tcp_pcb *pcb, u16_t len)
444  {  {
# Line 455  tcp_recved(struct tcp_pcb *pcb, u16_t le Line 455  tcp_recved(struct tcp_pcb *pcb, u16_t le
455    LWIP_DEBUGF(TCP_DEBUG, ("tcp_recved: recveived %u bytes, wnd %u (%u).\n",    LWIP_DEBUGF(TCP_DEBUG, ("tcp_recved: recveived %u bytes, wnd %u (%u).\n",
456           len, pcb->rcv_wnd, TCP_WND - pcb->rcv_wnd));           len, pcb->rcv_wnd, TCP_WND - pcb->rcv_wnd));
457  }  }
458  /*-----------------------------------------------------------------------------------*/  
459  /*  /*
460   * tcp_new_port():   * tcp_new_port():
461   *   *
462   * A nastly hack featuring 'goto' statements that allocates a   * A nastly hack featuring 'goto' statements that allocates a
463   * new TCP local port.   * new TCP local port.
464   */   */
465  /*-----------------------------------------------------------------------------------*/  
466  static u16_t  static u16_t
467  tcp_new_port(void)  tcp_new_port(void)
468  {  {
# Line 495  tcp_new_port(void) Line 495  tcp_new_port(void)
495    }    }
496    return port;    return port;
497  }  }
498  /*-----------------------------------------------------------------------------------*/  
499  /*  /*
500   * tcp_connect():   * tcp_connect():
501   *   *
# Line 503  tcp_new_port(void) Line 503  tcp_new_port(void)
503   * argument will be called when the connection has been established.   * argument will be called when the connection has been established.
504   *   *
505   */   */
506  /*-----------------------------------------------------------------------------------*/  
507  err_t  err_t
508  tcp_connect(struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t port,  tcp_connect(struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t port,
509        err_t (* connected)(void *arg, struct tcp_pcb *tpcb, err_t err))        err_t (* connected)(void *arg, struct tcp_pcb *tpcb, err_t err))
# Line 550  tcp_connect(struct tcp_pcb *pcb, struct Line 550  tcp_connect(struct tcp_pcb *pcb, struct
550    }    }
551    return ret;    return ret;
552  }  }
553  /*-----------------------------------------------------------------------------------*/  
554  /*  /*
555   * tcp_slowtmr():   * tcp_slowtmr():
556   *   *
# Line 558  tcp_connect(struct tcp_pcb *pcb, struct Line 558  tcp_connect(struct tcp_pcb *pcb, struct
558   * removes PCBs that have been in TIME-WAIT for enough time. It also increments   * removes PCBs that have been in TIME-WAIT for enough time. It also increments
559   * various timers such as the inactivity timer in each PCB.   * various timers such as the inactivity timer in each PCB.
560   */   */
561  /*-----------------------------------------------------------------------------------*/  
562  void  void
563  tcp_slowtmr(void)  tcp_slowtmr(void)
564  {  {
# Line 734  tcp_slowtmr(void) Line 734  tcp_slowtmr(void)
734      }      }
735    }    }
736  }  }
737  /*-----------------------------------------------------------------------------------*/  
738  /*  /*
739   * tcp_fasttmr():   * tcp_fasttmr():
740   *   *
741   * Is called every TCP_FAST_INTERVAL (250 ms) and sends delayed ACKs.   * Is called every TCP_FAST_INTERVAL (250 ms) and sends delayed ACKs.
742   */   */
743  /*-----------------------------------------------------------------------------------*/  
744  void  void
745  tcp_fasttmr(void)  tcp_fasttmr(void)
746  {  {
# Line 755  tcp_fasttmr(void) Line 755  tcp_fasttmr(void)
755      }      }
756    }    }
757  }  }
758  /*-----------------------------------------------------------------------------------*/  
759  /*  /*
760   * tcp_segs_free():   * tcp_segs_free():
761   *   *
762   * Deallocates a list of TCP segments (tcp_seg structures).   * Deallocates a list of TCP segments (tcp_seg structures).
763   *   *
764   */   */
765  /*-----------------------------------------------------------------------------------*/  
766  u8_t  u8_t
767  tcp_segs_free(struct tcp_seg *seg)  tcp_segs_free(struct tcp_seg *seg)
768  {  {
# Line 775  tcp_segs_free(struct tcp_seg *seg) Line 775  tcp_segs_free(struct tcp_seg *seg)
775    }    }
776    return count;    return count;
777  }  }
778  /*-----------------------------------------------------------------------------------*/  
779  /*  /*
780   * tcp_seg_free():   * tcp_seg_free():
781   *   *
782   * Frees a TCP segment.   * Frees a TCP segment.
783   *   *
784   */   */
785  /*-----------------------------------------------------------------------------------*/  
786  u8_t  u8_t
787  tcp_seg_free(struct tcp_seg *seg)  tcp_seg_free(struct tcp_seg *seg)
788  {  {
# Line 799  tcp_seg_free(struct tcp_seg *seg) Line 799  tcp_seg_free(struct tcp_seg *seg)
799    }    }
800    return count;    return count;
801  }  }
802  /*-----------------------------------------------------------------------------------*/  
803  /*  /*
804   * tcp_setprio():   * tcp_setprio():
805   *   *
806   * Sets the priority of a connection.   * Sets the priority of a connection.
807   *   *
808   */   */
809  /*-----------------------------------------------------------------------------------*/  
810  void  void
811  tcp_setprio(struct tcp_pcb *pcb, u8_t prio)  tcp_setprio(struct tcp_pcb *pcb, u8_t prio)
812  {  {
813    pcb->prio = prio;    pcb->prio = prio;
814  }  }
815  #if TCP_QUEUE_OOSEQ  #if TCP_QUEUE_OOSEQ
816  /*-----------------------------------------------------------------------------------*/  
817  /*  /*
818   * tcp_seg_copy():   * tcp_seg_copy():
819   *   *
820   * Returns a copy of the given TCP segment.   * Returns a copy of the given TCP segment.
821   *   *
822   */   */
823  /*-----------------------------------------------------------------------------------*/  
824  struct tcp_seg *  struct tcp_seg *
825  tcp_seg_copy(struct tcp_seg *seg)  tcp_seg_copy(struct tcp_seg *seg)
826  {  {
# Line 835  tcp_seg_copy(struct tcp_seg *seg) Line 835  tcp_seg_copy(struct tcp_seg *seg)
835    return cseg;    return cseg;
836  }  }
837  #endif  #endif
838  /*-----------------------------------------------------------------------------------*/  
839  #if LWIP_CALLBACK_API  #if LWIP_CALLBACK_API
840  static err_t  static err_t
841  tcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)  tcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)
# Line 849  tcp_recv_null(void *arg, struct tcp_pcb Line 849  tcp_recv_null(void *arg, struct tcp_pcb
849    return ERR_OK;    return ERR_OK;
850  }  }
851  #endif /* LWIP_CALLBACK_API */  #endif /* LWIP_CALLBACK_API */
852  /*-----------------------------------------------------------------------------------*/  
853  static void  static void
854  tcp_kill_prio(u8_t prio)  tcp_kill_prio(u8_t prio)
855  {  {
# Line 880  tcp_kill_prio(u8_t prio) Line 880  tcp_kill_prio(u8_t prio)
880    }          }      
881  }  }
882    
883  /*-----------------------------------------------------------------------------------*/  
884  static void  static void
885  tcp_kill_timewait(void)  tcp_kill_timewait(void)
886  {  {
# Line 902  tcp_kill_timewait(void) Line 902  tcp_kill_timewait(void)
902    }          }      
903  }  }
904    
905  /*-----------------------------------------------------------------------------------*/  
906  /*-----------------------------------------------------------------------------------*/  
907  struct tcp_pcb *  struct tcp_pcb *
908  tcp_alloc(u8_t prio)  tcp_alloc(u8_t prio)
909  {  {
# Line 955  tcp_alloc(u8_t prio) Line 955  tcp_alloc(u8_t prio)
955    }    }
956    return pcb;    return pcb;
957  }  }
958  /*-----------------------------------------------------------------------------------*/  
959  /*  /*
960   * tcp_new():   * tcp_new():
961   *   *
# Line 963  tcp_alloc(u8_t prio) Line 963  tcp_alloc(u8_t prio)
963   * any of the TCP PCB lists.   * any of the TCP PCB lists.
964   *   *
965   */   */
966  /*-----------------------------------------------------------------------------------*/  
967  struct tcp_pcb *  struct tcp_pcb *
968  tcp_new(void)  tcp_new(void)
969  {  {
970    return tcp_alloc(TCP_PRIO_NORMAL);    return tcp_alloc(TCP_PRIO_NORMAL);
971  }  }
972  /*-----------------------------------------------------------------------------------*/  
973  /*  /*
974   * tcp_arg():   * tcp_arg():
975   *   *
# Line 977  tcp_new(void) Line 977  tcp_new(void)
977   * functions.   * functions.
978   *   *
979   */   */
980  /*-----------------------------------------------------------------------------------*/  
981  void  void
982  tcp_arg(struct tcp_pcb *pcb, void *arg)  tcp_arg(struct tcp_pcb *pcb, void *arg)
983  {    {  
984    pcb->callback_arg = arg;    pcb->callback_arg = arg;
985  }  }
986  #if LWIP_CALLBACK_API  #if LWIP_CALLBACK_API
987  /*-----------------------------------------------------------------------------------*/  
988  /*  /*
989   * tcp_recv():   * tcp_recv():
990   *   *
# Line 992  tcp_arg(struct tcp_pcb *pcb, void *arg) Line 992  tcp_arg(struct tcp_pcb *pcb, void *arg)
992   * connection receives data.   * connection receives data.
993   *   *
994   */   */
995  /*-----------------------------------------------------------------------------------*/  
996  void  void
997  tcp_recv(struct tcp_pcb *pcb,  tcp_recv(struct tcp_pcb *pcb,
998     err_t (* recv)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err))     err_t (* recv)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err))
999  {  {
1000    pcb->recv = recv;    pcb->recv = recv;
1001  }  }
1002  /*-----------------------------------------------------------------------------------*/  
1003  /*  /*
1004   * tcp_sent():   * tcp_sent():
1005   *   *
# Line 1007  tcp_recv(struct tcp_pcb *pcb, Line 1007  tcp_recv(struct tcp_pcb *pcb,
1007   * has been successfully delivered to the remote host.   * has been successfully delivered to the remote host.
1008   *   *
1009   */   */
1010  /*-----------------------------------------------------------------------------------*/  
1011  void  void
1012  tcp_sent(struct tcp_pcb *pcb,  tcp_sent(struct tcp_pcb *pcb,
1013     err_t (* sent)(void *arg, struct tcp_pcb *tpcb, u16_t len))     err_t (* sent)(void *arg, struct tcp_pcb *tpcb, u16_t len))
1014  {  {
1015    pcb->sent = sent;    pcb->sent = sent;
1016  }  }
1017  /*-----------------------------------------------------------------------------------*/  
1018  /*  /*
1019   * tcp_err():   * tcp_err():
1020   *   *
# Line 1022  tcp_sent(struct tcp_pcb *pcb, Line 1022  tcp_sent(struct tcp_pcb *pcb,
1022   * has occured on the connection.   * has occured on the connection.
1023   *   *
1024   */   */
1025  /*-----------------------------------------------------------------------------------*/  
1026  void  void
1027  tcp_err(struct tcp_pcb *pcb,  tcp_err(struct tcp_pcb *pcb,
1028     void (* errf)(void *arg, err_t err))     void (* errf)(void *arg, err_t err))
1029  {  {
1030    pcb->errf = errf;    pcb->errf = errf;
1031  }  }
1032  /*-----------------------------------------------------------------------------------*/  
1033  /*  /*
1034   * tcp_accept():   * tcp_accept():
1035   *   *
# Line 1037  tcp_err(struct tcp_pcb *pcb, Line 1037  tcp_err(struct tcp_pcb *pcb,
1037   * LISTENing connection has been connected to another host.   * LISTENing connection has been connected to another host.
1038   *   *
1039   */   */
1040  /*-----------------------------------------------------------------------------------*/  
1041  void  void
1042  tcp_accept(struct tcp_pcb *pcb,  tcp_accept(struct tcp_pcb *pcb,
1043       err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err))       err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err))
# Line 1046  tcp_accept(struct tcp_pcb *pcb, Line 1046  tcp_accept(struct tcp_pcb *pcb,
1046  }  }
1047  #endif /* LWIP_CALLBACK_API */  #endif /* LWIP_CALLBACK_API */
1048    
1049  /*-----------------------------------------------------------------------------------*/  
1050  /*  /*
1051   * tcp_poll():   * tcp_poll():
1052   *   *
# Line 1055  tcp_accept(struct tcp_pcb *pcb, Line 1055  tcp_accept(struct tcp_pcb *pcb,
1055   * timer interval, which is called twice a second.   * timer interval, which is called twice a second.
1056   *   *
1057   */   */
1058  /*-----------------------------------------------------------------------------------*/  
1059  void  void
1060  tcp_poll(struct tcp_pcb *pcb,  tcp_poll(struct tcp_pcb *pcb,
1061     err_t (* poll)(void *arg, struct tcp_pcb *tpcb), u8_t interval)     err_t (* poll)(void *arg, struct tcp_pcb *tpcb), u8_t interval)
# Line 1065  tcp_poll(struct tcp_pcb *pcb, Line 1065  tcp_poll(struct tcp_pcb *pcb,
1065  #endif /* LWIP_CALLBACK_API */    #endif /* LWIP_CALLBACK_API */  
1066    pcb->pollinterval = interval;    pcb->pollinterval = interval;
1067  }  }
1068  /*-----------------------------------------------------------------------------------*/  
1069  /*  /*
1070   * tcp_pcb_purge():   * tcp_pcb_purge():
1071   *   *
1072   * Purges a TCP PCB. Removes any buffered data and frees the buffer memory.   * Purges a TCP PCB. Removes any buffered data and frees the buffer memory.
1073   *   *
1074   */   */
1075  /*-----------------------------------------------------------------------------------*/  
1076  void  void
1077  tcp_pcb_purge(struct tcp_pcb *pcb)  tcp_pcb_purge(struct tcp_pcb *pcb)
1078  {  {
# Line 1107  tcp_pcb_purge(struct tcp_pcb *pcb) Line 1107  tcp_pcb_purge(struct tcp_pcb *pcb)
1107        NULL;        NULL;
1108    }    }
1109  }  }
1110  /*-----------------------------------------------------------------------------------*/  
1111  /*  /*
1112   * tcp_pcb_remove():   * tcp_pcb_remove():
1113   *   *
1114   * Purges the PCB and removes it from a PCB list. Any delayed ACKs are sent first.   * Purges the PCB and removes it from a PCB list. Any delayed ACKs are sent first.
1115   *   *
1116   */   */
1117  /*-----------------------------------------------------------------------------------*/  
1118  void  void
1119  tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb)  tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb)
1120  {  {
# Line 1133  tcp_pcb_remove(struct tcp_pcb **pcblist, Line 1133  tcp_pcb_remove(struct tcp_pcb **pcblist,
1133    
1134    LWIP_ASSERT("tcp_pcb_remove: tcp_pcbs_sane()", tcp_pcbs_sane());    LWIP_ASSERT("tcp_pcb_remove: tcp_pcbs_sane()", tcp_pcbs_sane());
1135  }  }
1136  /*-----------------------------------------------------------------------------------*/  
1137  /*  /*
1138   * tcp_next_iss():   * tcp_next_iss():
1139   *   *
1140   * Calculates a new initial sequence number for new connections.   * Calculates a new initial sequence number for new connections.
1141   *   *
1142   */   */
1143  /*-----------------------------------------------------------------------------------*/  
1144  u32_t  u32_t
1145  tcp_next_iss(void)  tcp_next_iss(void)
1146  {  {
# Line 1149  tcp_next_iss(void) Line 1149  tcp_next_iss(void)
1149    iss += tcp_ticks;       /* XXX */    iss += tcp_ticks;       /* XXX */
1150    return iss;    return iss;
1151  }  }
1152  /*-----------------------------------------------------------------------------------*/  
1153  #if TCP_DEBUG || TCP_INPUT_DEBUG || TCP_OUTPUT_DEBUG  #if TCP_DEBUG || TCP_INPUT_DEBUG || TCP_OUTPUT_DEBUG
1154  void  void
1155  tcp_debug_print(struct tcp_hdr *tcphdr)  tcp_debug_print(struct tcp_hdr *tcphdr)
# Line 1181  tcp_debug_print(struct tcp_hdr *tcphdr) Line 1181  tcp_debug_print(struct tcp_hdr *tcphdr)
1181           ntohs(tcphdr->chksum), ntohs(tcphdr->urgp)));           ntohs(tcphdr->chksum), ntohs(tcphdr->urgp)));
1182    LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n"));    LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n"));
1183  }  }
1184  /*-----------------------------------------------------------------------------------*/  
1185  void  void
1186  tcp_debug_print_state(enum tcp_state s)  tcp_debug_print_state(enum tcp_state s)
1187  {  {
# Line 1222  tcp_debug_print_state(enum tcp_state s) Line 1222  tcp_debug_print_state(enum tcp_state s)
1222     break;     break;
1223    }    }
1224  }  }
1225  /*-----------------------------------------------------------------------------------*/  
1226  void  void
1227  tcp_debug_print_flags(u8_t flags)  tcp_debug_print_flags(u8_t flags)
1228  {  {
# Line 1251  tcp_debug_print_flags(u8_t flags) Line 1251  tcp_debug_print_flags(u8_t flags)
1251      LWIP_DEBUGF(TCP_DEBUG, ("CWR "));      LWIP_DEBUGF(TCP_DEBUG, ("CWR "));
1252    }    }
1253  }  }
1254  /*-----------------------------------------------------------------------------------*/  
1255  void  void
1256  tcp_debug_print_pcbs(void)  tcp_debug_print_pcbs(void)
1257  {  {
# Line 1278  tcp_debug_print_pcbs(void) Line 1278  tcp_debug_print_pcbs(void)
1278      tcp_debug_print_state(pcb->state);      tcp_debug_print_state(pcb->state);
1279    }        }    
1280  }  }
1281  /*-----------------------------------------------------------------------------------*/  
1282  int  int
1283  tcp_pcbs_sane(void)  tcp_pcbs_sane(void)
1284  {  {
# Line 1295  tcp_pcbs_sane(void) Line 1295  tcp_pcbs_sane(void)
1295  }  }
1296  #endif /* TCP_DEBUG */  #endif /* TCP_DEBUG */
1297  #endif /* LWIP_TCP */  #endif /* LWIP_TCP */
1298  /*-----------------------------------------------------------------------------------*/  
1299    
1300    
1301    

Legend:
Removed from v.1.31.2.9  
changed lines
  Added in v.1.31.2.10

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26