mirror of
https://github.com/ipxe/ipxe
synced 2025-12-21 20:40:25 +03:00
[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:
@@ -91,12 +91,13 @@ static int vlan_transmit ( struct net_device *netdev,
|
||||
const void *ll_dest;
|
||||
const void *ll_source;
|
||||
uint16_t net_proto;
|
||||
unsigned int flags;
|
||||
int rc;
|
||||
|
||||
/* Strip link-layer header and preserve link-layer header fields */
|
||||
ll_protocol = netdev->ll_protocol;
|
||||
if ( ( rc = ll_protocol->pull ( netdev, iobuf, &ll_dest, &ll_source,
|
||||
&net_proto ) ) != 0 ) {
|
||||
&net_proto, &flags ) ) != 0 ) {
|
||||
DBGC ( netdev, "VLAN %s could not parse link-layer header: "
|
||||
"%s\n", netdev->name, strerror ( rc ) );
|
||||
return rc;
|
||||
@@ -214,10 +215,12 @@ struct net_device * vlan_find ( struct net_device *trunk, unsigned int tag ) {
|
||||
* @v trunk Trunk 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 vlan_rx ( struct io_buffer *iobuf, struct net_device *trunk,
|
||||
const void *ll_dest, const void *ll_source ) {
|
||||
const void *ll_dest, const void *ll_source,
|
||||
unsigned int flags __unused ) {
|
||||
struct vlan_header *vlanhdr = iobuf->data;
|
||||
struct net_device *netdev;
|
||||
struct ll_protocol *ll_protocol;
|
||||
|
||||
Reference in New Issue
Block a user