[AGENT++] IPv4/IPv6 support for Agent++

Neil Gendzwill gendzwil at sedsystems.ca
Mon Aug 11 18:20:08 CEST 2014


Whoops, closer inspection of that code shows it's an either-or thing also.

My 2nd question still stands - are there any examples of how this has 
been done using the existing code?

On 08/11/2014 09:48 AM, Neil Gendzwill wrote:
> Thanks for the reply, Frank.  I'm a little confused though - there 
> seems to already be quite a bit of support for dual-stack in Snmpx.  
> You can see the code in the receive method where there are flags for 
> can_receive_ipv4 and can_receive_ipv6.  I'm guessing from your reply 
> that it's not just a matter of exposing the dual-stack constructor in 
> Snmp to complete the job?
>
> Do you have any examples where people have done this?  Our code 
> currently uses the Mib class where an instance of Mib holds a 
> RequestList which in turn holds an Snmpx.  Would we have two instances 
> of Mib?  The comments indicate it is supposed to be a singleton.
>
> Neil
>
> On 08/08/2014 04:50 PM, Frank Fock wrote:
>> Hello Neil,
>>
>> That is indeed a shortcoming of AGENT++. We will try to add dual 
>> stack support ASAP.
>> However, I expect that there are some architectural changes necessary.
>> A positive side effect should be, that AGENT++ then will support 
>> multiple addresses
>> and ports like SNMP4J-Agent already does. (Which is also a 
>> requirement to support
>> TCP based transport protocols in the future.)
>> I do not expect that these changes will be ready to be released 
>> before end of October.
>>
>> Meanwhile one option would be to use two Snmpx instances, but that 
>> would not
>> work well for many reasons (sending back the response, 
>> synchronization of the
>> SNMP counters/USM/VACM).
>>
>> So at the moment, using two agents seems to be the safest approach.
>>
>> Best regards,
>> Frank Fock
>>
>> Am 08.08.2014 00:58, schrieb Neil Gendzwill:
>>> We would like to support requests from both IPv4 and IPv6 clients in 
>>> a dual-stack Linux environment (SL 6, if it matters).
>>>
>>> Our current code uses the Agent++ class Snmpx, which inherits from 
>>> the Snmp++ class Snmp.
>>>
>>> The Snmp class allows support for IPv6 by either setting a flag in 
>>> one of the constructors or using a constructor with two UDP 
>>> addresses. From uxsnmp.h:
>>>
>>> Snmp(int &status, const unsigned short port = 0, const bool 
>>> bind_ipv6 = false);  // Source code shows this support is either/or 
>>> depending on bind_ipv6
>>> Snmp(int &status, const UdpAddress& addr); // Again, either/or 
>>> depending on contents of addr
>>> Snmp(int &status, const UdpAddress& addr_v4, const UdpAddress& 
>>> addr_v6);   // This constructor supports both
>>>
>>> However, Snmpx  only supports the first two constructors and does 
>>> not support the dual address constructor.  It also defaults 
>>> bind_ipv6 in the first constructor to false.  On the surface of it, 
>>> seems like it supports only one protocol or the other.  From 
>>> snmp_pp_ext.h:
>>>
>>> Snmpx(int &status, u_short port): Snmp(status, port) {}
>>> Snmpx(int &status, const NS_SNMP UdpAddress& addr): Snmp( status, 
>>> addr) {}
>>> // 3rd Snmp constructor unsupported
>>>
>>> How do I set up an agent that listens to requests in either 
>>> protocol?  Or do I need two agents?
>>>
>>> Regards,
>>>
>>> Neil Gendzwill
>>> SED Systems
>>> Saskatoon, Canada
>>>
>>> _______________________________________________
>>> AGENTPP mailing list
>>> AGENTPP at agentpp.org
>>> https://oosnmp.net/mailman/listinfo/agentpp
>>
>
> _______________________________________________
> AGENTPP mailing list
> AGENTPP at agentpp.org
> https://oosnmp.net/mailman/listinfo/agentpp



More information about the AGENTPP mailing list