martini Опубликовано 7 марта, 2013 · Жалоба А ктонить подскажет в каком файлике можна глянуть всю FDb ?? тоесть чтобы не использовать brctl showmacs bridgeXXX ?? Ато перерыл вроде всю ветку /proc и ничего похожего не видать.. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sirmax Опубликовано 7 марта, 2013 · Жалоба Не уверен что поможет .. #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 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
martini Опубликовано 7 марта, 2013 · Жалоба 2 sirmax - спасибо, но к сожалению ничего не нашел там, хотя теоретически похоже что в brforward будут маки, но как их оттуда выгрести ?? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sirmax Опубликовано 7 марта, 2013 · Жалоба 2 sirmax - спасибо, но к сожалению ничего не нашел там, хотя теоретически похоже что в brforward будут маки, но как их оттуда выгрести ?? Я потому и написал, что не уверен что поможет =) сходу не нагуглил, надо в код смотреть как оно их достает. Но нет ни времени не сил. Если сделаете - расскажите, инетерсно. в /usr/src/linux/Documentation тоже ничего сходу не нашел Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
martini Опубликовано 7 марта, 2013 · Жалоба да гуглю с самого утра.. пока ничего интересного. На данный момент решение только циклом просматривать все интерфейсы и делать brctl showmacs bridgeXXX и выводить.. Но не хочется такую громадину городить. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
DemYaN Опубликовано 7 марта, 2013 · Жалоба Еще есть bridge из iproute2: https://git.kernel.org/cgit/linux/kernel/git/shemminger/iproute2.git/commit/?id=d04bc300c3e367702817fed6eea55e997a328c66 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
evil-man Опубликовано 9 марта, 2013 · Жалоба Никак. Все FDB хранятся в памяти ядра, причём у каждого моста она (FDB) отдельная. Так что все записи можно получить только пробежавшись в цилке по всем мостам в системе, забирая с каждого. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
^rage^ Опубликовано 10 марта, 2013 · Жалоба Выдернул из 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; }; Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
^rage^ Опубликовано 22 апреля, 2013 · Жалоба В 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 ] Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
martini Опубликовано 22 апреля, 2013 · Жалоба )) спасибо, но уже переполз на МХ80 ) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
DemYaN Опубликовано 22 апреля, 2013 · Жалоба В iproute2 добавили команду bridge. Еще есть bridge из iproute2: https://git.kernel.o...ea55e997a328c66 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
^rage^ Опубликовано 22 апреля, 2013 · Жалоба ну то я просто в git посмотрел. а тут собрал и засетапил. кстати, из интересных вещей ещё vxvlan - позволяет гонять l2 поверх мультикаста. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...