home config option & virtual interfaces

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

we participate in the GDS and are using several gnugk 2.0.7
with different IPs on one physical machine. Eventually we
want to switch to 2.2.7, but unfortunately this causes problems
with our virtual interfaces. They are indicated in known_bugs.txt
for H.245 sockets, but in our case the focus lies on the
proper LRQ routing, which is rather fragile inside the GDS.

If gnugk 2.2.7 has to answer or forward a Request, he takes
the sender ip address and looks for a local interface within
the same subnet. If not successful, he falls back to the
interface with the local default route, which is the real
interface of the machine. Now he chooses its ip address as
sender address for the answer or the forwarded request.

But inside the GDS the correct sender ip address is of
utmost importance, cause it is mentioned in lots of neighbor
tables all around the world, and requests will be eventually
rejected.

Attached is a patch which changes this default ip address
to the first address given in the Home config option. This
works for us at least for LRQ routing, i can't estimate if
it fixes all the H.245 problems too (or generate new troubles).
Please consider the integration in the gnugk source.

Regards
Stefan Anders

--
German National Research and Education Network
http://www.dfn.de/
*** Toolkit.cxx.orig    2008-06-24 12:04:47.155981010 +0200
--- Toolkit.cxx 2008-06-24 17:38:27.887196017 +0200
***************
*** 270,275 ****
--- 270,284 ----
        else
                defAddr = GetLocalAddress(defGW);

+       // Set default IP to first Home IP, if given.
+       PString Home = GkConfig()->GetString("Home", "");
+       PStringArray Homes = Home.Tokenise(",:;", false);
+       if (Homes.GetSize() > 0) {
+           PIPSocket::Address testAddr = Homes[0];
+           if (testAddr.AsString() != "0.0.0.0")
+               defAddr = Homes[0];
+       }
+
  #if PTRACING
        for (RouteEntry *entry = rtable_begin; entry != rtable_end; ++entry)
                PTRACE(2, "Network=" << entry->GetNetwork() << '/' << entry->GetNetMask() <<

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________________

Posting: mailto:Openh323gk-users@xxxxxxxxxxxxxxxxxxxxx
Archive: http://sourceforge.net/mailarchive/forum.php?forum_name=openh323gk-users
Unsubscribe: http://lists.sourceforge.net/lists/listinfo/openh323gk-users
Homepage: http://www.gnugk.org/

[Index of Archives]     [SIP]     [Open H.323]     [Gnu Gatekeeper]     [Asterisk PBX]     [ISDN Cause Codes]     [Yosemite News]

  Powered by Linux