0. Предыстория
- Есть фрибсд-сервер.
- На сервере есть куча интерфейсов (~200).
- На некоторых интерфейсах надо пускать arpd.
1. Bug
- 16 arpd-ей запустились нормально.
- На запуске 17-го получаем “arpd: bad interface configuration: not IP or Ethernet”
- Копание в исходниках показало что проблема в libdnet, в коем гвоздями прибито не юзать /dev/bpf’ы с номером более 32
3. Patch for /usr/ports/net/libdnet
1
2
3
4
5
6
7
8
9
10
11
|
--- src/eth-bsd.c.orig 2009-04-16 14:22:44.000000000 +0600
+++ src/eth-bsd.c 2009-04-16 14:23:31.000000000 +0600
@@ -45,7 +45,7 @@
int i;
if ((e = calloc(1, sizeof(*e))) != NULL) {
- for (i = 0; i < 32; i++) {
+ for (i = 0; i < 256; i++) {
snprintf(file, sizeof(file), "/dev/bpf%d", i);
e->fd = open(file, O_WRONLY);
if (e->fd != -1 || errno != EBUSY)
|