Raimund Sacherer wrote: > we want the server to listen on 2 interfaces, but there is a problem, if > i tell it to bind to * (any device) it seems to NOT sent the package out > to the client on the same interface it gots in, in fact, it seems it's > randomly choosing on which interface it sends the package out. > > so, the client send's to X.X.X.X but the reply comes from X.X.X.Y and > the client does not accept the package ... > > is this a bug or am i missing something?
I run into a similar problem a long time ago. A patch was submitted on the development list[1], but it's not enabled by default. You have to build the server with : $ ./configure --with-udpfromto [1] http://lists.cistron.nl/archives/freeradius-devel/2003/09/frm00034.html It solved the problem of "received response to request we did not send" for me with Freeradius 0.9.x However I recently tested 1.0.0 version and found out that a line of the patch was not included in the source tree. And it looks like I found a volunteer to test the following patch :-) Index: src/main/mainconfig.c =================================================================== RCS file: /source/radiusd/src/main/mainconfig.c,v retrieving revision 1.39 diff -u -r1.39 mainconfig.c --- src/main/mainconfig.c 10 Jun 2004 18:23:10 -0000 1.39 +++ src/main/mainconfig.c 15 Sep 2004 13:38:01 -0000 @@ -49,6 +49,9 @@ #include <grp.h> #include <pwd.h> +#ifdef WITH_UDPFROMTO +#include "udpfromto.h" +#endif #ifdef HAVE_SYSLOG_H # include <syslog.h> @@ -935,7 +938,13 @@ if (this->fd < 0) { return -1; } - + +#ifdef WITH_UDPFROMTO + if (udpfromto_init(this->fd) != 0) { + radlog(L_ERR|L_CONS, "ERROR: udpfromto init failed."); + } +#endif + sa = (struct sockaddr_in *) &salocal; memset ((char *) sa, '\0', sizeof(salocal)); sa->sin_family = AF_INET; -- Nicolas Baradakis - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html