david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[eoib] Silently ignore EoIB heartbeat packets

Some EoIB implementations transmit a vendor-proprietary heartbeat
packet on the same multicast group used to provide the EoIB broadcast
domain.

Silently ignore these heartbeat packets, to avoid cluttering up the
network interface error statistics.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2016-03-09 00:40:38 +00:00
parent 9154d7a65c
commit ecd93cfc11
1 changed files with 45 additions and 0 deletions

View File

@ -752,3 +752,48 @@ struct ib_driver eoib_driver __ib_driver = {
.notify = eoib_notify,
.remove = eoib_remove,
};
/****************************************************************************
*
* EoIB heartbeat packets
*
****************************************************************************
*/
/**
* Silently ignore incoming EoIB heartbeat packets
*
* @v iobuf I/O buffer
* @v netdev Network device
* @v ll_source Link-layer source address
* @v flags Packet flags
* @ret rc Return status code
*/
static int eoib_heartbeat_rx ( struct io_buffer *iobuf,
struct net_device *netdev __unused,
const void *ll_dest __unused,
const void *ll_source __unused,
unsigned int flags __unused ) {
free_iob ( iobuf );
return 0;
}
/**
* Transcribe EoIB heartbeat address
*
* @v net_addr EoIB heartbeat address
* @ret string "<EoIB>"
*
* This operation is meaningless for the EoIB heartbeat protocol.
*/
static const char * eoib_heartbeat_ntoa ( const void *net_addr __unused ) {
return "<EoIB>";
}
/** EoIB heartbeat network protocol */
struct net_protocol eoib_heartbeat_protocol __net_protocol = {
.name = "EoIB",
.net_proto = htons ( EOIB_MAGIC ),
.rx = eoib_heartbeat_rx,
.ntoa = eoib_heartbeat_ntoa,
};