Mercurial > nand-ecoscentric
diff packages/redboot/current/src/net/tcp.c @ 242:56f2780a49bc
RedBoot ICMP patch from Hendrik.Ruijter@axis.com
| author | msalter |
|---|---|
| date | Tue, 16 Jul 2002 16:25:42 +0000 |
| parents | d2c90368aeef |
| children | 13ba50dd5a8e |
line wrap: on
line diff
--- a/packages/redboot/current/src/net/tcp.c +++ b/packages/redboot/current/src/net/tcp.c @@ -64,6 +64,8 @@ #define SEQ_GT(a,b) ((int)((a)-(b)) > 0) #define SEQ_GE(a,b) ((int)((a)-(b)) >= 0) +/* Set a timer which will send an RST and abort a connection. */ +static timer_t abort_timer; static void do_retrans(void *p); static void do_close(void *p); @@ -689,6 +691,25 @@ void } +/* + * Close the tcp connection. + */ +static void +do_abort(void *s) +{ + BSPLOG(bsp_log("do_abort: send RST\n")); + tcp_send((tcp_socket_t *)s, TCP_FLAG_ACK | TCP_FLAG_RST, 0); + __timer_cancel(&abort_timer); + ((tcp_socket_t *)s)->state = _CLOSED; + free_rxlist((tcp_socket_t *)s); + unlink_socket((tcp_socket_t *)s); +} + +void +__tcp_abort(tcp_socket_t *s, unsigned long delay) +{ + __timer_set(&abort_timer, delay, do_abort, s); +} /* * Close the tcp connection.
