diff options
author | Michael Brown <mcb30@ipxe.org> | 2016-03-09 00:40:38 +0000 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2016-03-09 08:43:40 +0000 |
commit | ecd93cfc116dd95864634b837e2b8dff09ae5dce (patch) | |
tree | b2c56c9cc6903747b9de41ccfaceed51af72a4c5 /src/drivers/net/eoib.c | |
parent | 9154d7a65c4fea575ff684bd08dc54db814f513c (diff) | |
download | ipxe-ecd93cfc116dd95864634b837e2b8dff09ae5dce.tar.gz |
[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>
Diffstat (limited to 'src/drivers/net/eoib.c')
-rw-r--r-- | src/drivers/net/eoib.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/drivers/net/eoib.c b/src/drivers/net/eoib.c index c5b2f5c7f..44eed4cc5 100644 --- a/src/drivers/net/eoib.c +++ b/src/drivers/net/eoib.c @@ -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, +}; |