martini Posted March 7, 2013 Posted March 7, 2013 А ктонить подскажет в каком файлике можна глянуть всю FDb ?? тоесть чтобы не использовать brctl showmacs bridgeXXX ?? Ато перерыл вроде всю ветку /proc и ничего похожего не видать.. Вставить ник Quote
sirmax Posted March 7, 2013 Posted March 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 Вставить ник Quote
martini Posted March 7, 2013 Author Posted March 7, 2013 2 sirmax - спасибо, но к сожалению ничего не нашел там, хотя теоретически похоже что в brforward будут маки, но как их оттуда выгрести ?? Вставить ник Quote
sirmax Posted March 7, 2013 Posted March 7, 2013 2 sirmax - спасибо, но к сожалению ничего не нашел там, хотя теоретически похоже что в brforward будут маки, но как их оттуда выгрести ?? Я потому и написал, что не уверен что поможет =) сходу не нагуглил, надо в код смотреть как оно их достает. Но нет ни времени не сил. Если сделаете - расскажите, инетерсно. в /usr/src/linux/Documentation тоже ничего сходу не нашел Вставить ник Quote
martini Posted March 7, 2013 Author Posted March 7, 2013 да гуглю с самого утра.. пока ничего интересного. На данный момент решение только циклом просматривать все интерфейсы и делать brctl showmacs bridgeXXX и выводить.. Но не хочется такую громадину городить. Вставить ник Quote
DemYaN Posted March 7, 2013 Posted March 7, 2013 Еще есть bridge из iproute2: https://git.kernel.org/cgit/linux/kernel/git/shemminger/iproute2.git/commit/?id=d04bc300c3e367702817fed6eea55e997a328c66 Вставить ник Quote
evil-man Posted March 9, 2013 Posted March 9, 2013 Никак. Все FDB хранятся в памяти ядра, причём у каждого моста она (FDB) отдельная. Так что все записи можно получить только пробежавшись в цилке по всем мостам в системе, забирая с каждого. Вставить ник Quote
^rage^ Posted March 10, 2013 Posted March 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; }; Вставить ник Quote
^rage^ Posted April 22, 2013 Posted April 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 ] Вставить ник Quote
martini Posted April 22, 2013 Author Posted April 22, 2013 )) спасибо, но уже переполз на МХ80 ) Вставить ник Quote
DemYaN Posted April 22, 2013 Posted April 22, 2013 В iproute2 добавили команду bridge. Еще есть bridge из iproute2: https://git.kernel.o...ea55e997a328c66 Вставить ник Quote
^rage^ Posted April 22, 2013 Posted April 22, 2013 ну то я просто в git посмотрел. а тут собрал и засетапил. кстати, из интересных вещей ещё vxvlan - позволяет гонять l2 поверх мультикаста. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.