[prev in list] [next in list] [prev in thread] [next in thread] 

List:       net-snmp-coders
Subject:    Re: clientAddr ipv6
From:       Pushpa Thimmaiah <pushpa.thimmaiah () gmail ! com>
Date:       2018-10-31 5:33:07
Message-ID: CAASqVJU+0Txnmp6rezBJ-Bw-zJXWqbKJkxXoyAPZVvhTQGtP_A () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Thank you Bart. I will  check.

Regards,
Pushpa.T

On Tue, Oct 30, 2018 at 10:34 AM Bart Van Assche <bvanassche@acm.org> wrote:

> On 10/29/18 9:34 PM, Pushpa Thimmaiah wrote:
> > Thank you.  I  will verify. Does the patch works for IPv6 too?
>
> Oops, I had overlooked that your example uses an IPv6 client address.
> Can you verify whether the following (untested) patch helps (checked
> in yesterday on the v5.8 and master branches):
>
> commit 9b637efe809c490fdcaf30d1af20b4cbaef76e3e
> Author: Bart Van Assche <bvanassche@acm.org>
> Date:   Sat Oct 27 20:34:21 2018 -0700
>
>      libsnmp/transports: Fix netsnmp_udp6_transport()
>
>      Only create a transport object if parsing the client address succeeded
>      instead of creating a transport object when parsing the client address
>      failed.
>
>      Fixes: 5d8372341594 ("shared transport + udp shared domain")
>
> diff --git a/snmplib/transports/snmpUDPIPv6Domain.c
> b/snmplib/transports/snmpUDPIPv6Domain.c
> index 4d9f65eb9d19..7a3b1db15c67 100644
> --- a/snmplib/transports/snmpUDPIPv6Domain.c
> +++ b/snmplib/transports/snmpUDPIPv6Domain.c
> @@ -460,14 +460,16 @@ netsnmp_udp6_transport(const struct sockaddr_in6
> *addr, int local)
>   {
>       if (!local) {
>           const char *client_socket;
> +
>           client_socket = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
>
> NETSNMP_DS_LIB_CLIENT_ADDR);
>           if (client_socket) {
>               struct sockaddr_in6 client_addr;
> -            if(!netsnmp_sockaddr_in6_2(&client_addr, client_socket,
> NULL)) {
> -                return netsnmp_udp6_transport_with_source(addr, local,
> -                                                          &client_addr);
> -            }
> +
> +            if (!netsnmp_sockaddr_in6_2(&client_addr, client_socket,
> NULL))
> +                return NULL;
> +            return netsnmp_udp6_transport_with_source(addr, local,
> +                                                      &client_addr);
>           }
>       }
>       return netsnmp_udp6_transport_with_source(addr, local, NULL);
>

[Attachment #5 (text/html)]

<div dir="ltr"><div>Thank you Bart. I will   \
check.</div><div><br></div><div>Regards,</div><div>Pushpa.T<br></div></div><br><div \
class="gmail_quote"><div dir="ltr">On Tue, Oct 30, 2018 at 10:34 AM Bart Van Assche \
&lt;<a href="mailto:bvanassche@acm.org">bvanassche@acm.org</a>&gt; \
wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 \
.8ex;border-left:1px #ccc solid;padding-left:1ex">On 10/29/18 9:34 PM, Pushpa \
Thimmaiah wrote:<br> &gt; Thank you.   I   will verify. Does the patch works for IPv6 \
too?<br> <br>
Oops, I had overlooked that your example uses an IPv6 client address.<br>
Can you verify whether the following (untested) patch helps (checked<br>
in yesterday on the v5.8 and master branches):<br>
<br>
commit 9b637efe809c490fdcaf30d1af20b4cbaef76e3e<br>
Author: Bart Van Assche &lt;<a href="mailto:bvanassche@acm.org" \
                target="_blank">bvanassche@acm.org</a>&gt;<br>
Date:     Sat Oct 27 20:34:21 2018 -0700<br>
<br>
        libsnmp/transports: Fix netsnmp_udp6_transport()<br>
<br>
        Only create a transport object if parsing the client address succeeded<br>
        instead of creating a transport object when parsing the client address<br>
        failed.<br>
<br>
        Fixes: 5d8372341594 (&quot;shared transport + udp shared domain&quot;)<br>
<br>
diff --git a/snmplib/transports/snmpUDPIPv6Domain.c \
b/snmplib/transports/snmpUDPIPv6Domain.c<br> index 4d9f65eb9d19..7a3b1db15c67 \
                100644<br>
--- a/snmplib/transports/snmpUDPIPv6Domain.c<br>
+++ b/snmplib/transports/snmpUDPIPv6Domain.c<br>
@@ -460,14 +460,16 @@ netsnmp_udp6_transport(const struct sockaddr_in6 *addr, int \
local)<br>  {<br>
         if (!local) {<br>
               const char *client_socket;<br>
+<br>
               client_socket = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,<br>
                                                                        \
NETSNMP_DS_LIB_CLIENT_ADDR);<br>  if (client_socket) {<br>
                     struct sockaddr_in6 client_addr;<br>
-                  if(!netsnmp_sockaddr_in6_2(&amp;client_addr, client_socket, NULL)) \
                {<br>
-                        return netsnmp_udp6_transport_with_source(addr, local,<br>
-                                                                                     \
                &amp;client_addr);<br>
-                  }<br>
+<br>
+                  if (!netsnmp_sockaddr_in6_2(&amp;client_addr, client_socket, \
NULL))<br> +                        return NULL;<br>
+                  return netsnmp_udp6_transport_with_source(addr, local,<br>
+                                                                                 \
&amp;client_addr);<br>  }<br>
         }<br>
         return netsnmp_udp6_transport_with_source(addr, local, NULL);<br>
</blockquote></div>





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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic