Re: Getting listening port number while processing request
Bart Van Assche <[email protected]> Wed, 27 Mar 2024 16:13:23 -0700
| Newsgroups | gmane.network.net-snmp.devel |
|---|---|
| Message-ID | <[email protected]> |
On 3/27/24 00:15, Teus Benschop wrote: > On Wed, 27 Mar 2024 at 00:58, Bart Van Assche <[email protected]> wrote: > > Please explain why you want to obtain that information and also > how you plan to use it. Which APIs to modify will depend on the > answer to that question. > > > > Hello Bert, > > Thank you for asking this question. > > The background to this is that we are building software to control > traffic signs above the highways. These signs are controlled through > one of the NTCIP protocols (https://www.ntcip.org). And this protocol > again is based on the SNMP protocol. Each traffic sign contains one > SNMP agent that listens on a given port number. > > We are building a simulator to simulate all of those traffic signs. > Currently one simulator simulates one traffic sign. The traffic sign > has many and large SNMP tables registered with Net-SNMP. Due to the > sheer size and amount of objects in the SNMP tables, plus many other > registered objects, one simulator now allocates about 350 Mbytes of > memory. > > If we simulate, say, 20 traffic signs, then the allocated memory > becomes about 7 Gbytes. If we simulate 100 traffic signs, then the > allocated memory becomes around 35 Gigabytes. > > We now have the idea to only run one SNMP agent, and hence allocate > only 350 Megabytes of memory, but then let this SNMP agent listen on > multiple ports, through the Net-SNMP library. > > The traffic signs listen on the TCP protocol, hence the simulator uses > TCP too. > > If the simulator listens on, say, port 2001, 2002, 2003, and so on, > then this would simulate traffic sign #1 on port 2001, traffic sign #2 > on port 2002, and traffic sign #3 on port 2003. If the traffic control > software sends a SNMP get request to, say, port 2002, then the traffic > sign simulator knows that it should respond with data about traffic > sign #2. > > Hence if the Net-SNMP library would expose the TCP port number that a > given request was sent to, the simulator would make a call to the > Net-SNMP library to find the port number, and give an appropriate > response. > > This is the reason why I want to obtain the port number, and this > would be the intended usage of it. Hi Teus, Thanks for the background information. I'm not sure the Net-SNMP API needs to be modified to realize this. How about the following approach: * Use netsnmp_register_handler() in MIB implementations to associate OIDs with callback functions. * In the handler callback function, use the reqinfo->asp->session->local_port information. * Make sure that session->local_port is set correctly. This may require a code change in Net-SNMP. Best regards, Bart. _______________________________________________ Net-snmp-coders mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/net-snmp-coders