AlanR said:
All NICs have the ability to listen to multiple MAC addresses - for example its native MAC address and ff-ff-ff-ff-ff-ff.
This is a design feature. But the packets sent to FF:FF:FF:FF:FF:FF are known as 'broadcast packets' instead of unicast.
AlanR said:
LLDP and CDP messages are not allowed to be forwarded by anyone else - including bridges, and are only visible to the recipient at the other end of the link.
I don't take this for granted, this should be written 'LLDP and CDP messages
should not be allowed'...
AlanR said:
I suspect most hardware managed bridges provide their own LLDP or CDP packets.
They provide their own source ethernet address, but send the packet to the well-known protocol address. A filter on the receive side decides where the packet should be processed or discarded.
AlanR said:
If there is a switch between you and your LLDP-conforming switch, it is supposed to block that traffic and not forward it. You are not allowed to forward it - at least in theory ;-). My old, cheap, unmanaged 100mbit switches pass LLDP through - but my newer cheap unmanaged gbit switches block it.
Sure, depending what protocol you have in mind. If you talk about a 802.1d-aware switch, then this will not forward packets sent to 01:80:c2:00:00:00. But if it an unmanaged switch, then it will flood the packet on all the ports, if the target address is not known on the switch forwarding table. That's why I asked you before: Are you sure the other devices will remain unaffected? If you use an unmanaged switch, and then connect to a port a device which uses the 01:80:c2:00:00:00 MAC address, then all the packets for STP will be sent only through that port. Same for other protocols, such as LLDP.
AlanR said:
The VMware solutions probably put the NIC into promiscuous mode when they overflow the MAC table of the NIC - or maybe they just give up and do it from the start - because they know they will overflow it.
No. The physical interface is ALWAYS in promiscuous mode. The VMWare hosts uses filters to decide where it needs to send specific packets. This is true for other virtualization solutions which are using bridging: VirtualBox
AlanR said:
What I hear you saying is that you don't believe there's any way I can get FreeBSD to do what I want it to - followed by justifications and explanations of why it's not important.
Thanks for your time and patience!
Well, If you really need it, then probably you can write yourself a driver and/or userland tools to implement this 'limited promiscuous mode'. For me (and probably many others), 'promiscuous mode' means 'processing packets which are not sent to the broadcast address and not to the ethernet device address'. If it's two or two thousand, it doesn't matter. It's promiscous mode, plain and simple.
I find your problem intrestingly enough, but I don't have the possibility to code what you require. I just tried to clear things up, so we can talk about the same thing: promiscuous mode or not. If you have any reference where I could find why a device using more than one ethernet address at a time should not be called as 'working in promiscuous mode', I would be happy to read it.
Thanks for your time and patience!
You're welcome ;-)