arplookup failed

freebsd

При следующих sysctl переменных:

net.link.ether.inet.log_arp_permanent_modify: 0
net.link.ether.inet.log_arp_movements: 0
net.link.ether.inet.log_arp_wrong_iface: 0
net.inet.tcp.log_in_vain: 0
net.inet.tcp.log_debug: 0

Приходят сообщения следующего вида:

kernel: arplookup xxx.xx.xx.xx failed: host is not on local network

yyy.yy.yy.yy - em0 1000Base
zzz.zz.zz.zz - алиас em0

С настройками сети абсолютно всё в порядке, маски - верные, роуты - тоже.

Есть подозрение, что это баг,

/usr/src/sys/netinet/if_ether.c

.........................849.......................

/*
* Lookup or enter a new address in arptab.
*/
static struct rtentry *
arplookup(u_long addr, int create, int proxy)
{
struct rtentry *rt;
struct sockaddr_inarp sin;
const char *why = 0;

bzero(&sin, sizeof(sin));
sin.sin_len = sizeof(sin);
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = addr;
if (proxy)
sin.sin_other = SIN_PROXY;
rt = rtalloc1((struct sockaddr *)&sin, create, 0UL);
if (rt == 0)
return (0);

if (rt->rt_flags & RTF_GATEWAY)
why = "host is not on local network";
else if ((rt->rt_flags & RTF_LLINFO) == 0)
why = "could not allocate llinfo";
else if (rt->rt_gateway->sa_family != AF_LINK)
why = "gateway route is not ours";

if (why) {
#define ISDYNCLONE(_rt) \
(((_rt)->rt_flags & (RTF_STATIC | RTF_WASCLONED)) == RTF_WASCLONED)
if (create)
log(LOG_DEBUG, "arplookup %s failed: %s\n",
inet_ntoa(sin.sin_addr), why);
/*
* If there are no references to this Layer 2 route,
* and it is a cloned route, and not static, and
* arplookup() is creating the route, then purge
* it from the routing table as it is probably bogus.
*/
if (rt->rt_refcnt == 1 && ISDYNCLONE(rt))
rtexpunge(rt);
RTFREE_LOCKED(rt);
return (0);
#undef ISDYNCLONE
} else {
RT_REMREF(rt);
return (rt);
}
}


Вопрос в каком месте поправить код, чтобы не приходили подобные сообщения?
Кто с таким сталкивался? (спрашиваю пока тут, потому, что писать в freebs-net@ - рановато)
Ответы:
в свое время авторитетные для меня люди сказали на это, забей, я забил, ничего с тех пор не произашло :)
я бы забил, но мне это ненужно, это нужно моему знакомому, оно очень сильно переполняет /var, его можно чистить, но я бы очень хотел докопаться до сути, я подозреваю, что дело в (((_rt)->rt_flags & (RTF_STATIC | RTF_WASCLONED)) == RTF_WASCLONED), то есть дело в алиасе, но могу ошибаться.


17 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.