Lines Matching refs:tcph
115 static int handle_tcp_options(struct nes_cm_node *cm_node, struct tcphdr *tcph, struct sk_buff *skb…
439 struct tcphdr *tcph; in form_cm_frame() local
445 packetsize += sizeof(*tcph); in form_cm_frame()
449 memset(skb->data, 0x00, ETH_HLEN + sizeof(*iph) + sizeof(*tcph)); in form_cm_frame()
458 tcph = (struct tcphdr *)buf; in form_cm_frame()
462 buf += sizeof(*tcph); in form_cm_frame()
488 tcph->source = htons(cm_node->mapped_loc_port); in form_cm_frame()
489 tcph->dest = htons(cm_node->mapped_rem_port); in form_cm_frame()
490 tcph->seq = htonl(cm_node->tcp_cntxt.loc_seq_num); in form_cm_frame()
494 tcph->ack_seq = htonl(cm_node->tcp_cntxt.loc_ack_num); in form_cm_frame()
495 tcph->ack = 1; in form_cm_frame()
497 tcph->ack_seq = 0; in form_cm_frame()
502 tcph->syn = 1; in form_cm_frame()
509 tcph->fin = 1; in form_cm_frame()
513 tcph->rst = 1; in form_cm_frame()
515 tcph->doff = (u16)((sizeof(*tcph) + optionsize + 3) >> 2); in form_cm_frame()
516 tcph->window = htons(cm_node->tcp_cntxt.rcv_wnd); in form_cm_frame()
517 tcph->urg_ptr = 0; in form_cm_frame()
1857 struct tcphdr *tcph) in handle_rst_pkt() argument
1994 static int check_syn(struct nes_cm_node *cm_node, struct tcphdr *tcph, in check_syn() argument
1999 err = ((ntohl(tcph->ack_seq) == cm_node->tcp_cntxt.loc_seq_num)) ? 0 : 1; in check_syn()
2006 static int check_seq(struct nes_cm_node *cm_node, struct tcphdr *tcph, in check_seq() argument
2016 seq = ntohl(tcph->seq); in check_seq()
2017 ack_seq = ntohl(tcph->ack_seq); in check_seq()
2041 struct tcphdr *tcph) in handle_syn_pkt() argument
2047 optionsize = (tcph->doff << 2) - sizeof(struct tcphdr); in handle_syn_pkt()
2049 inc_sequence = ntohl(tcph->seq); in handle_syn_pkt()
2067 ret = handle_tcp_options(cm_node, tcph, skb, optionsize, in handle_syn_pkt()
2102 struct tcphdr *tcph) in handle_synack_pkt() argument
2108 optionsize = (tcph->doff << 2) - sizeof(struct tcphdr); in handle_synack_pkt()
2110 inc_sequence = ntohl(tcph->seq); in handle_synack_pkt()
2115 if (check_syn(cm_node, tcph, skb)) in handle_synack_pkt()
2117 cm_node->tcp_cntxt.rem_ack_num = ntohl(tcph->ack_seq); in handle_synack_pkt()
2119 ret = handle_tcp_options(cm_node, tcph, skb, optionsize, 0); in handle_synack_pkt()
2135 cm_node->tcp_cntxt.loc_seq_num = ntohl(tcph->ack_seq); in handle_synack_pkt()
2141 cm_node->tcp_cntxt.loc_seq_num = ntohl(tcph->ack_seq); in handle_synack_pkt()
2161 struct tcphdr *tcph) in handle_ack_pkt() argument
2168 optionsize = (tcph->doff << 2) - sizeof(struct tcphdr); in handle_ack_pkt()
2170 if (check_seq(cm_node, tcph, skb)) in handle_ack_pkt()
2173 skb_pull(skb, tcph->doff << 2); in handle_ack_pkt()
2174 inc_sequence = ntohl(tcph->seq); in handle_ack_pkt()
2180 ret = handle_tcp_options(cm_node, tcph, skb, optionsize, 1); in handle_ack_pkt()
2183 cm_node->tcp_cntxt.rem_ack_num = ntohl(tcph->ack_seq); in handle_ack_pkt()
2204 cm_node->tcp_cntxt.rem_ack_num = ntohl(tcph->ack_seq); in handle_ack_pkt()
2250 static int handle_tcp_options(struct nes_cm_node *cm_node, struct tcphdr *tcph, in handle_tcp_options() argument
2253 u8 *optionsloc = (u8 *)&tcph[1]; in handle_tcp_options()
2257 (u32)tcph->syn)) { in handle_tcp_options()
2268 cm_node->tcp_cntxt.snd_wnd = ntohs(tcph->window) << in handle_tcp_options()
2350 struct tcphdr *tcph = tcp_hdr(skb); in process_packet() local
2357 "ack=%d rst=%d fin=%d\n", cm_node, cm_node->state, tcph->syn, in process_packet()
2358 tcph->ack, tcph->rst, tcph->fin); in process_packet()
2360 if (tcph->rst) { in process_packet()
2362 } else if (tcph->syn) { in process_packet()
2364 if (tcph->ack) in process_packet()
2366 } else if (tcph->ack) { in process_packet()
2369 if (tcph->fin) in process_packet()
2374 handle_syn_pkt(cm_node, skb, tcph); in process_packet()
2377 handle_synack_pkt(cm_node, skb, tcph); in process_packet()
2380 ret = handle_ack_pkt(cm_node, skb, tcph); in process_packet()
2385 handle_rst_pkt(cm_node, skb, tcph); in process_packet()
2388 if ((fin_set) && (!check_seq(cm_node, tcph, skb))) in process_packet()
2732 struct tcphdr *tcph; in mini_cm_recv_pkt() local
2743 tcph = (struct tcphdr *)(skb->data + sizeof(struct iphdr)); in mini_cm_recv_pkt()
2746 nfo.loc_port = ntohs(tcph->dest); in mini_cm_recv_pkt()
2748 nfo.rem_port = ntohs(tcph->source); in mini_cm_recv_pkt()
2752 nfo.mapped_loc_port = ntohs(tcph->dest); in mini_cm_recv_pkt()
2754 nfo.mapped_rem_port = ntohs(tcph->source); in mini_cm_recv_pkt()
2760 &tmp_daddr, tcph->dest, &tmp_saddr, tcph->source); in mini_cm_recv_pkt()
2770 if ((!tcph->syn) || (tcph->ack)) { in mini_cm_recv_pkt()
2796 if (!tcph->rst && !tcph->fin) { in mini_cm_recv_pkt()
2816 skb_set_transport_header(skb, sizeof(*tcph)); in mini_cm_recv_pkt()