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

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

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

revision 1.27.2.1 by marcbou, Thu Jun 19 14:26:22 2003 UTC revision 1.27.2.2 by kieranm, Thu Aug 21 09:59:21 2003 UTC
# Line 405  tcp_output(struct tcp_pcb *pcb) Line 405  tcp_output(struct tcp_pcb *pcb)
405      tcphdr->chksum = inet_chksum_pseudo(p, &(pcb->local_ip), &(pcb->remote_ip),      tcphdr->chksum = inet_chksum_pseudo(p, &(pcb->local_ip), &(pcb->remote_ip),
406            IP_PROTO_TCP, p->tot_len);            IP_PROTO_TCP, p->tot_len);
407    
408      ip_output(p, &(pcb->local_ip), &(pcb->remote_ip), TCP_TTL,  
409        ip_output(p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos,
410          IP_PROTO_TCP);          IP_PROTO_TCP);
411      pbuf_free(p);      pbuf_free(p);
412    
# Line 527  tcp_output_segment(struct tcp_seg *seg, Line 528  tcp_output_segment(struct tcp_seg *seg,
528    ++lwip_stats.tcp.xmit;    ++lwip_stats.tcp.xmit;
529  #endif /* TCP_STATS */  #endif /* TCP_STATS */
530    
531    ip_output(seg->p, &(pcb->local_ip), &(pcb->remote_ip), TCP_TTL,    ip_output(seg->p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos,
532        IP_PROTO_TCP);        IP_PROTO_TCP);
533  }  }
534  /*-----------------------------------------------------------------------------------*/  /*-----------------------------------------------------------------------------------*/
# Line 561  tcp_rst(u32_t seqno, u32_t ackno, Line 562  tcp_rst(u32_t seqno, u32_t ackno,
562  #ifdef TCP_STATS  #ifdef TCP_STATS
563    ++lwip_stats.tcp.xmit;    ++lwip_stats.tcp.xmit;
564  #endif /* TCP_STATS */  #endif /* TCP_STATS */
565    ip_output(p, local_ip, remote_ip, TCP_TTL, IP_PROTO_TCP);     /* Send output with hardcoded TTL since we have no access to the pcb */
566      ip_output(p, local_ip, remote_ip, TCP_TTL, 0, IP_PROTO_TCP);
567    pbuf_free(p);    pbuf_free(p);
568    LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_rst: seqno %lu ackno %lu.\n", seqno, ackno));    LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_rst: seqno %lu ackno %lu.\n", seqno, ackno));
569  }  }
# Line 595  tcp_rexmit(struct tcp_pcb *pcb) Line 597  tcp_rexmit(struct tcp_pcb *pcb)
597    tcp_output(pcb);    tcp_output(pcb);
598    
599  }  }
600    /*-----------------------------------------------------------------------------------*/
601    void
602    tcp_keepalive(struct tcp_pcb *pcb)
603    {
604       struct pbuf *p;
605       struct tcp_hdr *tcphdr;
606    
607       LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: sending KEEPALIVE probe to %u.%u.%u.%u\n",
608                               ip4_addr1(&pcb->remote_ip), ip4_addr2(&pcb->remote_ip),
609                               ip4_addr3(&pcb->remote_ip), ip4_addr4(&pcb->remote_ip)));
610    
611       LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: tcp_ticks %ld   pcb->tmr %ld  pcb->keep_cnt %ld\n", tcp_ticks, pcb->tmr, pcb->keep_cnt));
612      
613       p = pbuf_alloc(PBUF_IP, TCP_HLEN, PBUF_RAM);
614    
615       if(p == NULL) {
616          LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: could not allocate memory for pbuf\n"));
617          return;
618       }
619    
620       tcphdr = p->payload;
621       tcphdr->src = htons(pcb->local_port);
622       tcphdr->dest = htons(pcb->remote_port);
623       tcphdr->seqno = htonl(pcb->snd_nxt - 1);
624       tcphdr->ackno = htonl(pcb->rcv_nxt);
625       tcphdr->wnd = htons(pcb->rcv_wnd);
626       tcphdr->urgp = 0;
627       TCPH_HDRLEN_SET(tcphdr, 5);
628      
629       tcphdr->chksum = 0;
630       tcphdr->chksum = inet_chksum_pseudo(p, &pcb->local_ip, &pcb->remote_ip, IP_PROTO_TCP, p->tot_len);
631    
632    #ifdef TCP_STATS
633      ++lwip_stats.tcp.xmit;
634    #endif /* TCP_STATS */
635    
636       /* Send output to IP */
637      ip_output(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP);
638    
639      pbuf_free(p);
640    
641      LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_keepalive: seqno %lu ackno %lu.\n", pcb->snd_nxt - 1, pcb->rcv_nxt));
642    }
643    
644  #endif /* LWIP_TCP */  #endif /* LWIP_TCP */
645    
646    

Legend:
Removed from v.1.27.2.1  
changed lines
  Added in v.1.27.2.2

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