On Thu, 23 Feb 2006 09:39:18 +0100 Jørgen Hovland <jorgen@xxxxxxxxxx> wrote: > (sorry about the empty last email) > > ----- Original Message ----- > From: "Stephen Hemminger" <shemminger@xxxxxxxx> > > > On Wed, 22 Feb 2006 09:42:49 +0100 > > Jørgen Hovland <jorgen@xxxxxxxxxx> wrote: > > > >> So there is no way to get the physical interface from a mac address? > > > > You can read the forwarding database (see brctl sources for how). > > But the value can change as result of traffic. > > > > > I did actually look at the code before I emailed the list. Sorry if I am > missing something, but a fdb_entry maps a hardware address to a port number. > This arbitary port number points to the port_info structure which seems to > only hold information about what bridge it belongs to. And the bridge_info > structure doesn't contain any information either. > The only place I can find something that might be useful is in > linux/netdevice.h and the "struct net_bridge_port *br_port" under the > net_device structure. This is inside the kernel as it needs __KERNEL__ > defined in order to use it, or is this what I am looking for? > > Thank you once again > > Joergen The old way is to do ioctl() SIOCDEV_PRIVATE with BRCTL_GET_BRIDGES and that gives a table of ifindices, you can use that to map port -> ifindex -> etherdevice Newer way is to look in directory: /sys/class/net/brX/brif It has symlinks to the devices that are being bridged. /sys/class/net/eth0/brport/port_id contains the portid of eth0 in what ever bridge it is in.