Jump to content

Recommended Posts

Posted

А ктонить подскажет в каком файлике можна глянуть всю FDb ?? тоесть чтобы не использовать brctl showmacs bridgeXXX ??

Ато перерыл вроде всю ветку /proc и ничего похожего не видать..

Posted

Не уверен что поможет ..

#strace brctl  showmacs SVL0  2>&1 | grep open
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/lib64/libc.so.6", O_RDONLY)      = 3
open("/sys/class/net/SVL0/brforward", O_RDONLY) = 4
open("/sys/class/net/SVL0/brforward", O_RDONLY) = 4
open("/sys/class/net/SVL0/brforward", O_RDONLY) = 4
open("/sys/class/net/SVL0/brforward", O_RDONLY) = 4
open("/sys/class/net/SVL0/brforward", O_RDONLY) = 4
open("/sys/class/net/SVL0/brforward", O_RDONLY) = 4
open("/sys/class/net/SVL0/brforward", O_RDONLY) = 4
open("/sys/class/net/SVL0/brforward", O_RDONLY) = 4
open("/proc/meminfo", O_RDONLY)         = 4

Posted

2 sirmax - спасибо, но к сожалению ничего не нашел там, хотя теоретически похоже что в brforward будут маки, но как их оттуда выгрести ??

Posted

2 sirmax - спасибо, но к сожалению ничего не нашел там, хотя теоретически похоже что в brforward будут маки, но как их оттуда выгрести ??

Я потому и написал, что не уверен что поможет =) сходу не нагуглил, надо в код смотреть как оно их достает.

Но нет ни времени не сил.

Если сделаете - расскажите, инетерсно.

в /usr/src/linux/Documentation тоже ничего сходу не нашел

Posted

да гуглю с самого утра.. пока ничего интересного. На данный момент решение только циклом просматривать все интерфейсы и делать brctl showmacs bridgeXXX и выводить.. Но не хочется такую громадину городить.

Posted

Никак. Все FDB хранятся в памяти ядра, причём у каждого моста она (FDB) отдельная. Так что все записи можно получить только пробежавшись в цилке по всем мостам в системе, забирая с каждого.

Posted

Выдернул из libbridge(bridge-utils):

 

int br_read_fdb(const char *bridge, struct fdb_entry *fdbs, 
               unsigned long offset, int num)  
{
       FILE *f;
       int i, n;
       struct __fdb_entry fe[num];
       char path[sYSFS_PATH_MAX]; 

       /* open /sys/class/net/brXXX/brforward */
       snprintf(path, SYSFS_PATH_MAX, SYSFS_CLASS_NET "%s/brforward", bridge);
       f = fopen(path, "r");
       if (f) {
               fseek(f, offset*sizeof(struct __fdb_entry), SEEK_SET);
               n = fread(fe, sizeof(struct __fdb_entry), num, f);
               fclose(f);
       } else {
               /* old kernel, use ioctl */
               unsigned long args[4] = { BRCTL_GET_FDB_ENTRIES,
                                         (unsigned long) fe,
                                         num, offset };
               struct ifreq ifr;
               int retries = 0; 

               strncpy(ifr.ifr_name, bridge, IFNAMSIZ);
               ifr.ifr_data = (char *) args;

       retry:
               n = ioctl(br_socket_fd, SIOCDEVPRIVATE, &ifr);

               /* table can change during ioctl processing */
               if (n < 0 && errno == EAGAIN && ++retries < 10) {
                       sleep(0);
                       goto retry;
               }
       }

       for (i = 0; i < n; i++) 
               __copy_fdb(fdbs+i, fe+i);

       return n;
}

 

сама fdb_entry объявлена вот так:

 

struct fdb_entry
{
       u_int8_t mac_addr[6];
       u_int16_t port_no;
       unsigned char is_local;
       struct timeval ageing_timer_value;
};

  • 1 month later...
Posted

В iproute2 добавили команду bridge.

 

NAME
      bridge - show / manipulate bridge addresses and devices

SYNOPSIS
      bridge [ OPTIONS ] OBJECT { COMMAND | help }

      OBJECT := { link | fdb | vlan | monitor }

      OPTIONS := { -V[ersion] | -s[tatistics] }

      bridge link set dev DEV  [ cost COST ] [ priority PRIO ]  [ state STATE] [ guard { on | off } ] [ hairpin { on | off } ] [ fastleave { on | off }
              ] [ root_block { on | off } ] [ hwmode { vepa | veb } ]

      bridge link [ show ] [ dev DEV ]

      bridge fdb { add | del } LLADDR dev DEV { local | temp } { self } { embedded }

      bridge fdb [ show ] [ dev DEV ]

      bridge vlan { add | del } dev DEV vid VID [ pvid ] [ untagged ]  [ self ]  [ master ]

      bridge vlan [ show ] [ dev DEV ]

      bridge monitor [ all | neigh | link ]

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.