Ключевые слова:patch, sigma, cronyx, freebsd, kernel, trouble, (найти похожие документы)
Date: Fri, 24 May 2002 20:54:00 +0400
From: Vladimir Kurtukov <Vladimir.Kurtukov@p1.f9.n5006.z2.fidonet.org>
Newsgroups: fido7.ru.unix.bsd
Subject: Патч для работы Cronyx Sigma-22 на FreeBSD 4.6
BO> Hа 4.3 работает хорошо, но после cvsup (от 22/05/2002) перестала
BO> работать. С родными драйверами говорит irq -1, с драйверами от cronyx
BO> v4 и v3.51 - запускается, но на попытку присвоить IP адрес ругается
BO> file exist и не присваивает. Может кто сталкивался?
а у тебя сети на интерфейсах не пересекаются?
если да, то либо убирать пересечение, либо патчить ядро
(замену EEXIST на 0 в 4.6 убрали)
патч примерно такой:
·-───────────────[ Begin of same_ifnet.diff ]──────────────--·
-+- src/sys/netinet/in.c 2001/12/14 19:59:55
+++ src/sys/netinet/in.c 2002/05/01 08:30:36
@@ -742,9 +742,14 @@
if (ia->ia_addr.sin_addr.s_addr != INADDR_ANY ||
ia->ia_netmask != IN_CLASSA_NET ||
ia->ia_dstaddr.sin_addr.s_addr != htonl(IN_CLASSA_HOST)) {
- if ((error = rtinit(&ia->ia_ifa, (int)RTM_ADD, flags)) != 0) {
- ia->ia_addr = oldaddr;
- return (error);
+ if ((error = rtinit(&ia->ia_ifa, (int)RTM_ADD, flags)) != 0) {
+ /* XXX check if the subnet route points to the same interface */
+ if (error == EEXIST) {
+ error = 0;
+ } else {
+ ia->ia_addr = oldaddr;
+ return (error);
+ }
}
ia->ia_flags |= IFA_ROUTE;
}
·-───────────────[ End of same_ifnet.diff ]──────────────--·
конкретно этот патч я нарисовал только что и не проверял
Vladimir