<feed xmlns='http://www.w3.org/2005/Atom'>
<title>openslx-ng/ipxe.git/src/net/arp.c, branch v1.20.1</title>
<subtitle>Fork of ipxe; additional commands and features</subtitle>
<id>https://git.openslx.org/openslx-ng/ipxe.git/atom/src/net/arp.c?h=v1.20.1</id>
<link rel='self' href='https://git.openslx.org/openslx-ng/ipxe.git/atom/src/net/arp.c?h=v1.20.1'/>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/'/>
<updated>2016-03-12T01:24:03+00:00</updated>
<entry>
<title>[arp] Validate length of ARP packet</title>
<updated>2016-03-12T01:24:03+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2016-03-12T01:21:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=64acfd9ddd73bf38802f8c57e054d13a57b14198'/>
<id>urn:sha1:64acfd9ddd73bf38802f8c57e054d13a57b14198</id>
<content type='text'>
There is no practical way to generate an underlength ARP packet since
an ARP packet is always padded up to the minimum Ethernet frame length
(or dropped by the receiving Ethernet hardware if incorrectly padded),
but the absence of an explicit check causes warnings from some
analysis tools.

Fix by adding an explicit check on the I/O buffer length.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[ipoib] Attempt to generate ARPs as needed to repopulate REMAC cache</title>
<updated>2015-06-29T13:50:16+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2015-06-29T13:50:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=8829634bd7188bdfa5528421a8bbecf39c498f40'/>
<id>urn:sha1:8829634bd7188bdfa5528421a8bbecf39c498f40</id>
<content type='text'>
The only way to map an eIPoIB MAC address (REMAC) to an IPoIB MAC
address is to intercept an incoming ARP request or reply.

If we do not have an REMAC cache entry for a particular destination
MAC address, then we cannot transmit the packet.  This can arise in at
least two situations:

 - An external program (e.g. a PXE NBP using the UNDI API) may attempt
   to transmit to a destination MAC address that has been obtained by
   some method other than ARP.

 - Memory pressure may have caused REMAC cache entries to be
   discarded.  This is fairly likely on a busy network, since REMAC
   cache entries are created for all received (broadcast) ARP
   requests.  (We can't sensibly avoid creating these cache entries,
   since they are required in order to send an ARP reply, and when we
   are being used via the UNDI API we may have no knowledge of which
   IP addresses are "ours".)

Attempt to ameliorate the situation by generating a semi-spurious ARP
request whenever we find a missing REMAC cache entry.  This will
hopefully trigger an ARP reply, which would then provide us with the
information required to populate the REMAC cache.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[legal] Relicense files under GPL2_OR_LATER_OR_UBDL</title>
<updated>2015-03-02T16:35:29+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2015-03-02T13:29:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=2f020a8df3ad24d0d0bac9295c9cecb2ebba92f4'/>
<id>urn:sha1:2f020a8df3ad24d0d0bac9295c9cecb2ebba92f4</id>
<content type='text'>
These files cannot be automatically relicensed by util/relicense.pl
since they either contain unusual but trivial contributions (such as
the addition of __nonnull function attributes), or contain lines
dating back to the initial git revision (and so require manual
knowledge of the code's origin).

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[neighbour] Generalise concept of neighbour discovery</title>
<updated>2013-09-03T01:02:58+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2013-09-01T15:13:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=c6a04085d25721a29af75beeb7c9c2e08a610cf2'/>
<id>urn:sha1:c6a04085d25721a29af75beeb7c9c2e08a610cf2</id>
<content type='text'>
Split the protocol-independent portions of arp.c into a separate file
neighbour.c, to allow for sharing of functionality between IPv4+ARP
and IPv6+NDP.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[arp] Increase robustness of ARP discarder</title>
<updated>2012-10-19T22:03:38+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2012-10-19T22:03:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=885384faf360c7501382182e620c32880fc783a5'/>
<id>urn:sha1:885384faf360c7501382182e620c32880fc783a5</id>
<content type='text'>
Take ownership from the ARP cache at the start of arp_destroy(), to
ensure that no code path can lead to arp_destroy() being re-entered.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[legal] Update FSF mailing address in GPL licence texts</title>
<updated>2012-07-20T18:55:45+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2012-07-20T18:55:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=c3b4860ce3fb25b907a2ca3e46955df34c0ae9fd'/>
<id>urn:sha1:c3b4860ce3fb25b907a2ca3e46955df34c0ae9fd</id>
<content type='text'>
Suggested-by: Daniel P. Berrange &lt;berrange@redhat.com&gt;
Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[arp] Try to avoid discarding ARP cache entries</title>
<updated>2012-07-09T09:08:38+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2012-07-09T08:55:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=024247317d50ffc4c44dd041aae19ae23b72788e'/>
<id>urn:sha1:024247317d50ffc4c44dd041aae19ae23b72788e</id>
<content type='text'>
Discarding the active ARP cache entry in the middle of a download will
substantially disrupt the TCP stream.  Try to minimise any such
disruption by treating ARP cache entries as expensive, and discarding
them only when nothing else is available to discard.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[arp] Prevent ARP cache entries from being deleted mid-transmission</title>
<updated>2012-07-01T17:31:23+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2012-07-01T17:24:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=19859d8eada26eeeb881054efc242cf2ed5609fb'/>
<id>urn:sha1:19859d8eada26eeeb881054efc242cf2ed5609fb</id>
<content type='text'>
Each ARP cache entry maintains a transmission queue, which is sent out
as soon as the link-layer address is known.  If multiple packets are
queued, then it is possible for memory pressure to cause the ARP cache
discarder to be invoked during transmission of the first packet, which
may cause the ARP cache entry to be deleted before the second packet
can be sent.  This results in an invalid pointer dereference.

Avoid this problem by reference-counting ARP cache entries and
ensuring that an extra reference is held while processing the
transmission queue, and by using list_first_entry() rather than
list_for_each_entry_safe() to traverse the queue.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[arp] Maintain an ARP transmission queue</title>
<updated>2012-03-02T23:46:29+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2012-03-02T20:12:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=d620606d3e8c913876a671990600c226788b71da'/>
<id>urn:sha1:d620606d3e8c913876a671990600c226788b71da</id>
<content type='text'>
Allow packet transmission to be deferred pending successful ARP
resolution.  This avoids the time spent waiting for a higher-level
protocol (e.g. TCP or TFTP) to attempt retransmission.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[netdevice] Allow link layer to report broadcast/multicast packets via pull()</title>
<updated>2011-07-15T17:48:46+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2011-07-15T17:48:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=a667bf044a37f9e96830f1f35627829860f7019f'/>
<id>urn:sha1:a667bf044a37f9e96830f1f35627829860f7019f</id>
<content type='text'>
Allow the link layer to directly report whether or not a packet is
multicast or broadcast at the time of calling pull(), rather than
relying on heuristics to determine this at a later stage.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
</feed>
