Commit Graph

37 Commits

Author SHA1 Message Date
Vladimir Serbinenko
63034d3261 arp, icmp: Fix handling in case of oversized or invalid packets.
This restrict ARP handling to MAC and IP addresses but in practice we need
only this case anyway and other cases are very rar if exist at all. It makes
code much simpler and less error-prone.
2015-03-27 12:18:25 +01:00
Michael Chang
7c4b6b7bb4 send router solicitation for ipv6 address autoconf v2
Many routers have long router advertisment interval configured by
default. The Neighbor Discovery protocol (RFC4861) has defined default
MaxRtrAdvInterval value as 600 seconds and
MinRtrAdvInterval as 0.33*MaxRtrAdvInterval. This makes
net_ipv6_autoconf fails more often than not as currently it passively
listens the RA message to perfom address autoconfiguration.

This patch tries to send router solicitation to overcome the problem of
long RA interval.

v2:
use cpu_to_be macro for network byte order conversion
add missing error handling
2014-11-28 20:21:34 +03:00
Vladimir Serbinenko
7e47e27bd8 Add gcc_struct to all packed structures when compiling with mingw.
Just "packed" doesn't always pack the way we expect.
2013-12-15 14:14:30 +01:00
Vladimir 'phcoder' Serbinenko
982f1909cf Implement flow control for http.
* grub-core/net/http.c (parse_line): Handle response 206.
	(http_receive): Stall if too many packets are in the queue.
	(http_establish): Fix range header.
	(http_seek): Fix double free.
	(http_close): Likewise.
	(http_packets_pulled): New function.
	(grub_http_protocol): Set http_seek
	* grub-core/net/tcp.c (grub_net_tcp_socket): New field `i_stall'.
	(ack_real): Set window depending on i_stall.
	(grub_net_send_tcp_packet): Likewise.
	(grub_net_tcp_stall): New function.
	(grub_net_tcp_unstall): Likewise.
	* include/grub/net/tcp.h (grub_net_tcp_stall): New proto.
	(grub_net_tcp_unstall): Likewise.
2012-06-22 22:09:31 +02:00
Bean
5efb817d64 * grub-core/net/ip.c (reassemble): Make asm_buffer into asm_netbuff.
All users updated.
	(free_rsm): Free header as well.
	(free_old_fragments): Fix memory leak.
	* grub-core/net/netbuff.c (grub_netbuff_free): Make return void.
	* grub-core/net/tftp.c (tftp_receive): Fix memory leak.
	(destroy_pq): Likewise.
	* include/grub/net/netbuff.h (grub_netbuff_free): Make return void.
2012-05-08 16:03:02 +02:00
Vladimir 'phcoder' Serbinenko
038ec56a31 nslookup implementation 2011-10-14 19:21:59 +02:00
Vladimir 'phcoder' Serbinenko
0cb9503b70 support routed pings 2011-10-13 20:53:22 +02:00
Vladimir 'phcoder' Serbinenko
bd40efbf0b several net bugfixes and improvements and fix some memory leaks 2011-10-13 18:31:53 +02:00
Vladimir 'phcoder' Serbinenko
da1b289afc IPv6. Apparently working. At least I could retrieve a file with http6 2011-10-13 01:22:56 +02:00
Vladimir 'phcoder' Serbinenko
7c006811f8 more ipv6 code. Now ipv6 ping succeeds 2011-10-12 23:15:02 +02:00
Vladimir 'phcoder' Serbinenko
a53cf6534d some more ipv6 code 2011-10-12 10:20:55 +02:00
Vladimir 'phcoder' Serbinenko
9aad3cd91d IPv6 support. Several fixes and unifications 2011-10-05 22:15:30 +02:00
Vladimir 'phcoder' Serbinenko
4f71e077b9 HTTP seek support. Various bugfixes. 2011-10-05 17:39:13 +02:00
Vladimir 'phcoder' Serbinenko
c410299b05 TCP listening support 2011-07-10 23:37:28 +02:00
Vladimir 'phcoder' Serbinenko
f4e6e2909b TCP fragmentation 2011-07-10 11:26:34 +02:00
Vladimir 'phcoder' Serbinenko
3a7af37260 basic tcp implementation 2011-07-10 08:46:48 +02:00
Vladimir 'phcoder' Serbinenko
fecdbd6b17 support ip fragmentation 2011-07-09 00:27:27 +02:00
Vladimir 'phcoder' Serbinenko
1367c143dd several cleanups. Ping reply support 2011-07-08 14:41:52 +02:00
Vladimir 'phcoder' Serbinenko
b975df6348 Send TFTP_ERROR on tftp premature close. Several cleanups 2011-07-06 12:53:37 +02:00
Vladimir 'phcoder' Serbinenko
7e0c2d162a Restructurisations, cleanups and few bugfixes 2011-07-02 22:13:33 +02:00
Vladimir 'phcoder' Serbinenko
6708faafde Fix broken blksize negotiation, fix broken seek and change a way net device is filled n i386-pc 2011-07-02 17:58:23 +02:00
Vladimir 'phcoder' Serbinenko
8b51fd98b9 bootp support 2011-06-24 20:35:25 +02:00
Manoel Rebelo Abranches
f42313bdb0 Remove unused structs and functions. 2011-05-25 11:10:48 -03:00
Manoel Rebelo Abranches
8db3b0eca9 Remove unused file 2011-05-10 14:08:18 -03:00
Manoel Rebelo Abranches
25f1579b43 Adapt protocols to new network struct. 2011-04-01 05:42:34 -03:00
Vladimir 'phcoder' Serbinenko
04d22dddd9 Fix a bunch of net issues 2010-09-23 00:45:39 +02:00
Vladimir 'phcoder' Serbinenko
ce3a2ec025 Remove some dead code 2010-09-22 20:34:20 +02:00
Manoel R. Abranches
7bb47706c9 Merge grub_net into net. Compiles but is broken right now. 2010-09-16 21:57:31 +02:00
Manoel R. Abranches
87fdc7e8d2 Create Open firmware pseudo driver.
Change ofnet.c to disknet.c and remove almost all ieee1275 specific code.
Create grub_net_malloc to handle iee1275 memory issues in a temporary solution.
2010-09-15 13:23:23 -03:00
Manoel R. Abranches
9a9cee4e43 Use the correct address types in net.c.
implement ntoa ipv4 function.
2010-09-15 13:00:51 -03:00
Paulo de Rezende Pinatti
10830203a0 Added ARP protocol to network stack and fixed bug in grub_netbuff_alloc function.
* include/grub/net/arp.h: added arp header, arp cache entry and related constants and functions
* net/arp.c: added functions arp_init_table, arp_find_entry, arp_resolve and arp_receive
* net/ethernet.c (send_ethernet_packet): replaced hardcoded hardware address by parameter target_addr
* net/ethernet.c (recv_ethernet_packet): added call to arp_receive when packet is of type 0x803 (ARP) and only return when packet is of type determined by parameter ethertype
* net/ip.c (send_ip_packet): added call to arp_resolve to determine hardware address of destination
* net/netbuff.c (grub_netbuff_alloc): fixed swapped parameters in call to grub_memalign
2010-08-13 14:42:16 -03:00
Manoel R. Abranches
7c978f0690 Implement the size field. 2010-07-29 18:17:01 -03:00
Manoel R. Abranches
3ec6213b17 Clean Debug messages 2010-06-29 06:50:15 -03:00
Manoel R. Abranches
1edb7287ff Parse ipv6 header on incoming packets. 2010-06-23 14:49:46 -03:00
Manoel R. Abranches
d17a9fea4a Add interface struct for communication between protocols and protocols stack.
Changed the protocols structs to use one struct for each layer.
2010-06-21 19:05:14 -03:00
Manoel R. Abranches
8d402bc9a8 small change in the interface structure. 2010-04-29 17:56:09 -03:00
Manoel R. Abranches
066528b4b1 Initial Implementation of TFTP protocol and new protocol structs. 2010-04-27 18:05:35 -03:00