On 4/3/24 02:35, Teus Benschop wrote:

A snmpd was set to listen on 10 ports through multiple entries like “agentaddress tcp:<port>” in the snmpd.conf file.
It was verified through snmpget that the snmpd listens on all 10 ports.

Function “netsnmp_callback_open” in file snmplib/transports/snmpCallbackDomain.c was patched to write a few debug messages.

It appears that the function “netsnmp_callback_open” is called once.
It sets the “callback_ss->local_port” to “((netsnmp_callback_info *) callback_tr->data)->callback_num”, which is 1. In the handler callback function, the reqinfo->asp->session->local_port is 0 while processing each snmpget.

You wrote "Make sure that session->local_port is set correctly." I studied the code to set this properly, but didn't manage to get the port number set correctly.

I think this is the callchain for registering the ports that the agent listens on:

init_master_agent()
  netsnmp_agent_listen_on()
    netsnmp_transport_open_server()
    netsnmp_register_agent_nsap()
      netsnmp_sess_config_transport()
      snmp_add()
        snmp_sess_add_ex()
          transport->f_setup_session()

One possible approach is to implement the .f_setup_session() callback in the TCP transport and to make it copy the port information from the transport into the session.

Best regards,

Bart.
_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to