[SNMP4J] renewSocketAfterException() binds to a specific address

Frank Fock fock at agentpp.com
Fri Jul 25 17:52:50 CEST 2014


Hi Prema,

I have changed the initialization of the UdpAddress to 
UdpAddress("0.0.0.0/0").
This however breaks the default constructor on IPv6 only systems.
I am currently thinking of deprecating the default constructor and 
removing it
from the (future) 3.0 code.

Best regards,
Frank

Am 23.07.2014 14:59, schrieb Prema Upot:
> Hi Frank,
>
> In the default constructor,
>
>    public DefaultUdpTransportMapping() throws IOException {
>      super(new UdpAddress(InetAddress.getLocalHost(), 0));
>      socket = new DatagramSocket(udpAddress.getPort());
>    }
>
> the UdpAddress is initialized with localhost as you mentioned. But only the port is passed to DatagramSocket and thus the ip address it binds to is a wild card ipaddress.
>
> But in renewSocetAfterException(), Socket is initialized using both ip and port which causes the mismatch.
>
> DatagramSocket s = new DatagramSocket(udpAddress.getPort(), udpAddress.getInetAddress());
>
>
> Thanks,
> Prema
>
> -----Original Message-----
> From: SNMP4J [mailto:snmp4j-bounces at agentpp.org] On Behalf Of Frank Fock
> Sent: Tuesday, July 22, 2014 4:57 PM
> To: snmp4j at agentpp.org
> Subject: Re: [SNMP4J] renewSocketAfterException() binds to a specific address
>
> Hi Prema,
>
> The renewSocketAdterException(..) method of the DefaultUdpTransportMapping uses *exactly* the same UDP address as provided in the constructor. If you provided "0.0.0.0", it will be used again.
> You wrote that you are using the default constructor. That one is *not* using "0.0.0.0", instead it uses the localhost IP address. It depends on your operating system and Java virtual machine which IP that is on a multi-home system.
>
> Best regards,
> Frank
>
>
> Am 22.07.2014 20:18, schrieb Prema Upot:
>> Hi,
>>
>> We initialize DefaultUdpTransportMapping using the default constructor and this makes sure the listening port binds to "0.0.0.0" address enabling sending and receiving UDP packets on any interface. But in renewSocketAfterException() the new socket is created using port and ipaddress as parameters and this causes a problems in a PC that is part of multiple networks.
>> For example, we have a PC in 192.168.144.0 and 192.168.30.0 networks. After socket exception, the new socket that is created binds to "192.168.144.<ip>:<port>" instead of "0.0.0.0:<port>" and because of this we cannot communicate with 30.0 network any more.
>>
>> Thanks,
>> Prema
>>
>>
>> _______________________________________________
>> SNMP4J mailing list
>> SNMP4J at agentpp.org
>> https://oosnmp.net/mailman/listinfo/snmp4j
> --
> ---
> AGENT++
> Maximilian-Kolbe-Str. 10
> 73257 Koengen, Germany
> https://agentpp.com
> Phone: +49 7024 8688230
> Fax:   +49 7024 8688231
>
> _______________________________________________
> SNMP4J mailing list
> SNMP4J at agentpp.org
> https://oosnmp.net/mailman/listinfo/snmp4j

-- 
---
AGENT++
Maximilian-Kolbe-Str. 10
73257 Koengen, Germany
https://agentpp.com
Phone: +49 7024 8688230
Fax:   +49 7024 8688231




More information about the SNMP4J mailing list