Michael Brown
649b789e93
DHCP transmits via specified net device, so no need to create a dummy
routing table entry just to fool ipv4.c any more.
18 anni fa
Michael Brown
c821a7b20d
Add udp_sendto_via() to allow e.g. DHCP to transmit without first having
to set up dummy routing entries.
18 anni fa
Michael Brown
f008b77ba2
Allow an explicit network device to be specified for IP-layer
transmissions.
18 anni fa
Michael Brown
d24b80acf2
Added network interface management commands
18 anni fa
Michael Brown
98b6154c3e
Add "name" field to network device, to facilitate netdev commands.
18 anni fa
Michael Brown
c65fae2475
Add RX quotas to the net device poll() method. This avoids the problem
of alloc_pkb() exhaustion when e.g. an iSCSI-booted DOS session is left
idle for a long time at the C:\ prompt and builds up a huge packet
backlog.
18 anni fa
Michael Brown
18e5353bed
Rename pkb_available() to pkb_tailroom() for consistency with Linux's
skb_tailroom(). Add pkb_headroom().
18 anni fa
Michael Brown
b7fcfe8ece
Added net device TX queue; this will be needed to support the PXE UNDI API
(which will need us to wait for TX completions).
Added debug autocolourisation to netdevice.c
18 anni fa
Michael Brown
8a268073a7
Move start/stop/expire debug messages to DBG2() level.
18 anni fa
Michael Brown
2eeb7c4fe7
Define "connected" as
"when SYN is ACKed and we have already received SYN", or
"when SYN is received and we have already had SYN ACKed"
rather than just
"when SYN is ACKed"
This avoids spuriously calling the connected() method when we receive
a RST,ACK in response to a SYN.
18 anni fa
Michael Brown
aaca21a2b6
We can't assert that the RX engine is idle in iscsi_done(), because it
may be called during the RX data processor, before the RX engine
transitions back to idle. It doesn't really matter if the RX engine
isn't idle when iscsi_done() is called, because it will just pick up
where it left off on the next call. (The same is not true for the TX
engine, so keep the TX engine assertion.)
18 anni fa
Michael Brown
6ea07b9247
Use debug auto-colourisation.
18 anni fa
Michael Brown
76525294ee
Clean up connection closing and permanent failure logic.
18 anni fa
Michael Brown
20681d6168
Allow empty checksums on received packets
18 anni fa
Michael Brown
0c03bb5a9a
Make open() and close() an official part of the netdevice API.
Call netdevice's poll() and transmit() methods only when device is open.
18 anni fa
Michael Brown
7fafa89258
A DHCP session holds a persistent reference to a network device
18 anni fa
Michael Brown
b29861a5aa
IPv6 minirouting table entries hold persistent references to net devices.
18 anni fa
Michael Brown
b22d4405c0
An AoE session holds a persistent reference to a net device.
18 anni fa
Michael Brown
35b5e5d3f5
Minirouting table entries hold a persistent reference to a net_device.
18 anni fa
Michael Brown
bdf79ec8dc
Use hotplug support to notify persistent reference holders when a
net_device is unregistered.
18 anni fa
Michael Brown
b0daa99dce
Send RST packets when we get a non-matching connection, or receive an
out-of-range ACK.
18 anni fa
Michael Brown
eea1167a85
Accept RST on received packets
18 anni fa
Michael Brown
94fc68895d
Improve consistency between TCP and UDP RX datapaths
18 anni fa
Michael Brown
a0525a4ed3
Verify checksums on the RX datapath.
Simplify checksum generation on the TX datapath.
18 anni fa
Michael Brown
285beeff7c
Tidy up debug messages
Move routing into a separate function
18 anni fa
Michael Brown
718294553b
Fix compiler warning
18 anni fa
Michael Brown
83e1340d88
Use autocolourisation
18 anni fa
Michael Brown
feb4f65d1e
Use auto-colourisation for debug messages.
Truncate TX length to TCP window at time of transmission rather than at
time of adding to TX packet; this is conceptually cleaner and also allows
the application to call tcp_send() multiple times to build up a single
packet.
18 anni fa
Michael Brown
ce9819af27
Redefine TCP state to include "flags that have been sent" rather than
"flags that are currently being sent". This allows at least one special
case (checking that we haven't already sent a FIN in tcp_rx_fin()) to be
collapsed.
18 anni fa
Michael Brown
be31970e36
Don't send a second FIN if we receive a FIN while in FIN_WAIT_2
18 anni fa
Michael Brown
61ed298bc7
Merge changes from mcb-tcp-fixes branch.
18 anni fa
Michael Brown
1a11cc5c5b
Added times to start/stop log messages
18 anni fa
Michael Brown
4cc1c1bd4c
Ensure that old TCP connection state is destroyed before attempting to
reopen connection. (The TCP API will soon change to render this step
unnecessary.)
18 anni fa
Michael Brown
a2e3357825
Cannot immediately overwrite the peer address when we parse
TargetAddress from the login response, because we still need the old
address while we close the connection!
18 anni fa
Michael Brown
66a7ed23cb
Make start_timer() and stop_timer() robust against incorrect usage.
18 anni fa
Michael Brown
d6f9152bfa
Avoid null pointer dereferences when no username/password specified.
18 anni fa
Michael Brown
6ceb55fad0
When login fails, leave the session open but not in full feature
phase. In iscsi_issue(), detect this state and immediately refuse the
operation. This avoids trying multiple logins when scsi.c tries
several times to read the drive capacity.
18 anni fa
Michael Brown
ab242a760d
Add ability to shut down iSCSI connection
18 anni fa
Michael Brown
60a3f77711
Close UDP connection when DHCP completes.
18 anni fa
Michael Brown
a646e38f03
Use stdlib.h for malloc() instead of malloc.h.
18 anni fa
Michael Brown
04c09823bd
Request all the options that we're prepared to do anything with.
18 anni fa
Michael Brown
a1af111a87
Also request root-path.
18 anni fa
Michael Brown
38ae94f8ce
A cleaner method of handling login redirection; just use the existing
reconnection mechanism. This avoids the problems of trying to reuse
the TCP connection structure before the old connection has cleanly exited.
18 anni fa
Michael Brown
5edb85c8b4
Work around another confused-by-RST bug
18 anni fa
Michael Brown
b9f9230661
Work around another instance of the port re-use bug.
18 anni fa
Michael Brown
8c3d09c564
Tweaked retry messages
18 anni fa
Michael Brown
9600af14a3
Added debug messages
18 anni fa
Michael Brown
cc0b92652f
Call closed() method only when the connection is genuinely in the
TCP_CLOSED state (i.e. after the final FIN/ACK exchange), and has been
removed from the list of TCP connections.
18 anni fa
Michael Brown
fcc70c9d60
Ensure that tcp_rx() always frees its received packet buffer.
18 anni fa
Michael Brown
28c711b91d
Killed off spurious <stdio.h> inclusion
18 anni fa