Lines Matching defs:sock

69   grub_err_t (*recv_hook) (grub_net_tcp_socket_t sock, struct grub_net_buff *nb,
71 void (*error_hook) (grub_net_tcp_socket_t sock, void *recv);
72 void (*fin_hook) (grub_net_tcp_socket_t sock, void *recv);
89 grub_net_tcp_socket_t sock,
134 grub_net_tcp_socket_t sock,
158 tcp_socket_register (grub_net_tcp_socket_t sock)
161 GRUB_AS_LIST (sock));
165 error (grub_net_tcp_socket_t sock)
169 if (sock->error_hook)
170 sock->error_hook (sock, sock->hook_data);
172 for (unack = sock->unack_first; unack; unack = next)
179 sock->unack_first = NULL;
180 sock->unack_last = NULL;
234 grub_net_tcp_close (grub_net_tcp_socket_t sock,
243 sock->recv_hook = NULL;
244 sock->error_hook = NULL;
245 sock->fin_hook = NULL;
249 sock->i_reseted = 1;
251 if (sock->i_closed)
254 sock->i_closed = 1;
280 tcph_fin->ack = grub_cpu_to_be32 (sock->their_cur_seq);
285 err = tcp_send (nb_fin, sock);
296 ack_real (grub_net_tcp_socket_t sock, int res)
331 tcph_ack->ack = grub_cpu_to_be32 (sock->their_cur_seq);
333 tcph_ack->window = grub_cpu_to_be16 (sock->my_window);
336 tcph_ack->src = grub_cpu_to_be16 (sock->in_port);
337 tcph_ack->dst = grub_cpu_to_be16 (sock->out_port);
338 err = tcp_send (nb_ack, sock);
347 ack (grub_net_tcp_socket_t sock)
349 ack_real (sock, 0);
353 reset (grub_net_tcp_socket_t sock)
355 ack_real (sock, 1);
361 grub_net_tcp_socket_t sock;
365 FOR_TCP_SOCKETS (sock)
368 for (unack = sock->unack_first; unack; unack = unack->next)
379 error (sock);
388 && tcph->ack != grub_cpu_to_be32 (sock->their_cur_seq))
393 &sock->inf->address.addr,
394 &sock->out_nla);
397 err = grub_net_send_ip_packet (sock->inf, &(sock->out_nla),
398 &(sock->ll_target_addr), unack->nb,
472 destroy_pq (grub_net_tcp_socket_t sock)
475 while ((nb_p = grub_priority_queue_top (sock->pq)))
478 grub_priority_queue_pop (sock->pq);
481 grub_priority_queue_destroy (sock->pq);
485 grub_net_tcp_accept (grub_net_tcp_socket_t sock,
486 grub_err_t (*recv_hook) (grub_net_tcp_socket_t sock,
489 void (*error_hook) (grub_net_tcp_socket_t sock,
491 void (*fin_hook) (grub_net_tcp_socket_t sock,
499 sock->recv_hook = recv_hook;
500 sock->error_hook = error_hook;
501 sock->fin_hook = fin_hook;
502 sock->hook_data = hook_data;
523 tcph->ack = grub_cpu_to_be32 (sock->their_cur_seq);
525 tcph->window = grub_cpu_to_be16 (sock->my_window);
527 sock->established = 1;
528 tcp_socket_register (sock);
529 err = tcp_send (nb_ack, sock);
532 sock->my_cur_seq++;
539 grub_err_t (*recv_hook) (grub_net_tcp_socket_t sock,
542 void (*error_hook) (grub_net_tcp_socket_t sock,
544 void (*fin_hook) (grub_net_tcp_socket_t sock,
743 grub_net_tcp_socket_t sock;
770 FOR_TCP_SOCKETS (sock)
772 if (!(grub_be_to_cpu16 (tcph->dst) == sock->in_port
773 && grub_be_to_cpu16 (tcph->src) == sock->out_port
774 && inf == sock->inf
775 && grub_net_addr_cmp (source, &sock->out_nla) == 0))
783 &sock->out_nla,
784 &sock->inf->address.addr);
799 && !sock->established)
801 sock->their_start_seq = grub_be_to_cpu32 (tcph->seqnr);
802 sock->their_cur_seq = sock->their_start_seq + 1;
803 sock->established = 1;
808 sock->they_reseted = 1;
810 error (sock);
821 for (unack = sock->unack_first; unack; unack = next)
839 sock->unack_first = unack;
840 if (!sock->unack_first)
841 sock->unack_last = NULL;
844 if (grub_be_to_cpu32 (tcph->seqnr) < sock->their_cur_seq)
846 ack (sock);
850 if (sock->i_reseted && (nb->tail - nb->data
854 reset (sock);
857 err = grub_priority_queue_push (sock->pq, &nb);
870 nb_top_p = grub_priority_queue_top (sock->pq);
875 if (grub_be_to_cpu32 (tcph->seqnr) >= sock->their_cur_seq)
878 grub_priority_queue_pop (sock->pq);
880 if (grub_be_to_cpu32 (tcph->seqnr) != sock->their_cur_seq)
884 nb_top_p = grub_priority_queue_top (sock->pq);
890 if (grub_be_to_cpu32 (tcph->seqnr) != sock->their_cur_seq)
892 grub_priority_queue_pop (sock->pq);
902 sock->their_cur_seq += (nb_top->tail - nb_top->data);
905 sock->they_closed = 1;
907 sock->their_cur_seq++;
913 grub_net_put_packet (&sock->packs, nb_top);
920 ack (sock);
921 while (sock->packs.first)
923 nb = sock->packs.first->nb;
924 if (sock->recv_hook)
925 sock->recv_hook (sock, sock->packs.first->nb, sock->hook_data);
928 grub_net_remove_packet (sock->packs.first);
931 if (sock->fin_hook && just_closed)
932 sock->fin_hook (sock, sock->hook_data);
946 sock = grub_zalloc (sizeof (*sock));
947 if (sock == NULL)
950 sock->out_port = grub_be_to_cpu16 (tcph->src);
951 sock->in_port = grub_be_to_cpu16 (tcph->dst);
952 sock->inf = inf;
953 sock->out_nla = *source;
954 sock->their_start_seq = grub_be_to_cpu32 (tcph->seqnr);
955 sock->their_cur_seq = sock->their_start_seq + 1;
956 sock->my_cur_seq = sock->my_start_seq = grub_get_time_ms ();
957 sock->my_window = 8192;
959 sock->pq = grub_priority_queue_new (sizeof (struct grub_net_buff *),
961 if (!sock->pq)
967 err = listen->listen_hook (listen, sock, listen->hook_data);