[netdevice] Allow link layer to report broadcast/multicast packets via pull()

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 <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2011-07-15 18:48:46 +01:00
parent 69b7d57265
commit a667bf044a
17 changed files with 99 additions and 43 deletions

View File

@@ -47,12 +47,14 @@ FILE_LICENCE ( GPL2_OR_LATER );
* @v netdev Network device
* @v ll_dest Link-layer destination address
* @v ll_source Link-layer source address
* @v flags Packet flags
* @ret rc Return status code
*/
static int lotest_rx ( struct io_buffer *iobuf,
struct net_device *netdev __unused,
const void *ll_dest __unused,
const void *ll_source __unused ) {
const void *ll_source __unused,
unsigned int flags __unused ) {
free_iob ( iobuf );
return -ENOTSUP;
}
@@ -97,6 +99,7 @@ int loopback_test ( struct net_device *sender, struct net_device *receiver,
const void *ll_dest;
const void *ll_source;
uint16_t net_proto;
unsigned int flags;
unsigned int i;
unsigned int successes;
int rc;
@@ -166,7 +169,8 @@ int loopback_test ( struct net_device *sender, struct net_device *receiver,
/* Check received packet */
if ( ( rc = receiver->ll_protocol->pull ( receiver, iobuf,
&ll_dest, &ll_source,
&net_proto ) ) != 0 ){
&net_proto,
&flags ) ) != 0 ) {
printf ( "\nFailed to strip link-layer header: %s",
strerror ( rc ) );
goto done;