From olaf@bigred.inka.de Fri Sep 20 19:36:42 MET DST 1996 Article: 2033 of de.comp.os.linux.networking Newsgroups: de.comp.os.linux.networking Path: knorke.saar.de!wg.saar.de!News.Saar.DE!news.coli.uni-sb.de!news.phil.uni-sb.de!news.rhein-neckar.de!rz.uni-karlsruhe.de!ka.sub.net!bigred.inka.de!not-for-mail From: Olaf Titz Subject: Re: talk will nicht! Message-ID: Date: 17 Sep 1996 12:04:52 +0200 References: <323C8113.3B7D3884@mailserv.rz.fh-merseburg.de> <51j972$j5r@rabbit2.isst.fhg.de> Organization: private Linux site, southern Germany Lines: 61 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Holger Isenberg wrote: > Das gleiche Problem habe ich auch. Es liegt hier daran, dass fuer meinen > Rechner zwei IP-Nummern eingetragen sind. > Im lokalen Netz ist der Rechner ueber IP-Nr 10.X.X.X mit dem dummy device > eingetragen. > Im Internet wird vom Provider dynamisch eine IP-Nr zugewiesen. > Talk ist in dieser Konfiguration NUR im lokalen Netz moeglich. > Von aussen sehe ich nur den talk-request ankommen, kann aber nicht antworten. > Warum? Weil im talk-Request-Paket die eigene IP-Adresse eingetragen wird. Wenn Du davon mehrere hast, wird die erste konfigurierte genommen. Wenn die nicht erreichbar ist, kann der talkd der Gegenseite nicht antworten - er nimmt die Adresse, die _im_ Paket steht, und nicht etwa die, unter der das Paket abgeschickt wurde. Ergo: talk funktioniert auf multi-homed Hosts nicht und der Grund ist das (kranke) talk-Protokoll. Abhilfe: ytalk verwenden, nachdem man es mit untenstehendem Patch compiliert hat, und vor dem Aufruf von ytalk die Environment-Variable HOSTNAME so setzen, daß sie sich im DNS zur erreichbaren Adresse auflöst. (Die Adresse selber reicht auch.) olaf --- user.c.orig Sun Nov 21 17:32:19 1993 +++ user.c Fri Jun 14 13:39:24 1996 @@ -133,6 +133,7 @@ int my_uid; char *my_name; char my_host[100]; + char *c; user_list = NULL; connect_list = NULL; @@ -159,10 +160,14 @@ /* get my hostname */ - if(gethostname(my_host, 100) < 0) - { - show_error("init_user: gethostname() failed"); - bail(YTE_ERROR); + if((c = getenv("HOSTNAME")) == NULL) { + if(gethostname(my_host, 100) < 0) + { + show_error("init_user: gethostname() failed"); + bail(YTE_ERROR); + } + } else { + strncpy(my_host, c, 100); } /* get my user record */ -- ___ Olaf.Titz@inka.de or @{stud,informatik}.uni-karlsruhe.de ____ __ o __/<_ >> Just as long as the wheels keep on turning round _)>(_)______________ I will live for the groove 'til the sun goes down << ____