Help on using clientaddr for Ipv6 address

chandrasekharreddy c <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <MN2PR04MB59506386CE6BACA5B7C682D0D4E60@MN2PR04MB5950.namprd04.prod.outlook.com>
Hi all,



I am using net-snmp 5.7.2 in my project .I want to use trap source interface feature in my project.

I enabled clientaddr by reading some posts in our community. It’s working fine for only Ip address interface.

It’s not working for Ipv6 address interfaces. I gone through the net-snmp code. I observed some code is missing for Ipv6 address in snmpUDPIPv6Domain.c

I added the below code to snmpUDPIPv6Domain.c . But,I am getting bind is failing with an error (errno 99).Am I missed anything .

Please help me to resolve this issue.

-------------------------------------------------------------------------------------------------------------

--- a/snmplib/transports/snmpUDPIPv6Domain.c 2019-09-03 15:47:53.000000000 -0700

+++ b/snmplib/transports/snmpUDPIPv6Domain.c 2019-09-18 19:11:14.817426615 -0700

@@ -196,6 +196,8 @@

int rc = 0;

char *str = NULL;

int socket_initialized = 0;

+ char *client_socket =NULL;

+ netsnmp_indexed_addr_pair addr_pair;



#ifdef NETSNMP_NO_LISTEN_SUPPORT

if (local)

@@ -206,6 +208,9 @@

return NULL;

}



+ memset(&addr_pair, 0, sizeof(netsnmp_indexed_addr_pair));

+ memcpy(&(addr_pair.remote_addr), addr, sizeof(struct sockaddr_in));

+

t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);

if (t == NULL) {

return NULL;

@@ -285,6 +290,26 @@

return NULL;

#endif /* NETSNMP_NO_LISTEN_SUPPORT */

} else {

+ /* This is a client sessuon.If we've been given a

+ *client address to send frm,then bind to that .

+ Otherwise the send will use "something sesible"

+ */

+ client_socket = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,

+ NETSNMP_DS_LIB_CLIENT_ADDR);

+ if (client_socket) {

+ struct sockaddr_in6 client_addr;

+ netsnmp_sockaddr_in6_2(&client_addr, client_socket, NULL);

+ client_addr.sin6_port=0;

+ rc = bind(t->sock, (struct sockaddr *)&client_addr,

+ sizeof(struct sockaddr_in6));

+ if (rc!=0) {

+ DEBUGMSGTL(("netsnmp_udp6","failed to bind for clientaddr:%d %s\n",

+ errno,strerror(errno)));

+ netsnmp_socketbase_close(t);

+ netsnmp_transport_free(t);

+ }

+ }

/*

* This is a client session. Save the address in the

* transport-specific data pointer for later use by netsnmp_udp6_send.

-------------------------------------------------------------------------------------------------------







Thanks,

Chandra.




Get Outlook for Android<https://aka.ms/ghei36>

_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.