<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:09:59 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>OpenDaylight JIRA</title>
    <link>https://jira.opendaylight.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.20.10</version>
        <build-number>820010</build-number>
        <build-date>22-06-2022</build-date>
    </build-info>


<item>
            <title>[MDSAL-512] Exception encountered while processing vpnv6 route</title>
                <link>https://jira.opendaylight.org/browse/MDSAL-512</link>
                <project id="10137" key="MDSAL">mdsal</project>
                    <description>&lt;p&gt;When Controller peers with a router that is advertising vpnv6 route with ipv4 next-hop address, below exception is seen during session establishment. Issue is seen in all releases Fluorine and beyond.&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;2020-01-02T11:47:30,092 | ERROR | opendaylight-cluster-data-notification-dispatcher-56 | DataTreeChangeListenerActor      | 274 - org.opendaylight.controller.sal-clustering-commons - 1.8.1 | member-1-shard-default-operational: Error notifying listener org.opendaylight.controller.sal.core.compat.LegacyDOMDataBrokerAdapter$2$$Lambda$968/1234951622@264c7425
java.lang.IllegalArgumentException: Supplied value &quot;10.176.0.235&quot; does not match required pattern &quot;((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\p{N}\p{L}]+)?&quot;
        at org.opendaylight.yangtools.yang.binding.CodeHelpers.checkPattern(CodeHelpers.java:130) ~[336:org.opendaylight.mdsal.yang-binding:0.13.1]
        at org.opendaylight.yangtools.yang.binding.CodeHelpers.checkPattern(CodeHelpers.java:149) ~[336:org.opendaylight.mdsal.yang-binding:0.13.1]
        at org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address.&amp;lt;init&amp;gt;(Ipv6Address.java:31) ~[322:org.opendaylight.mdsal.model.ietf-inet-types-2013-07-15:1.5.1]
        at org.opendaylight.mdsal.binding.dom.codec.impl.EncapsulatedValueCodec.deserialize(EncapsulatedValueCodec.java:73) ~[301:org.opendaylight.mdsal.binding-dom-codec:0.13.1]
        at org.opendaylight.mdsal.binding.dom.codec.impl.LeafNodeCodecContext.deserializeObject(LeafNodeCodecContext.java:196) ~[301:org.opendaylight.mdsal.binding-dom-codec:0.13.1]
        at org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectCodecContext.getBindingChildValue(DataObjectCodecContext.java:370) ~[301:org.opendaylight.mdsal.binding-dom-codec:0.13.1]
        at org.opendaylight.mdsal.binding.dom.codec.impl.LazyDataObject.getBindingData(LazyDataObject.java:152) ~[301:org.opendaylight.mdsal.binding-dom-codec:0.13.1]
        at org.opendaylight.mdsal.binding.dom.codec.impl.LazyDataObject.invoke(LazyDataObject.java:75) ~[301:org.opendaylight.mdsal.binding-dom-codec:0.13.1]
        at com.sun.proxy.$Proxy360.getGlobal(Unknown Source) ~[203:org.opendaylight.bgpcep.bgp-concepts:0.10.1]
        at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.next.hop.c.next.hop.ipv6.next.hop._case.Ipv6NextHop$StreamWriter.serialize(DataObjectSerializerPrototype.java) ~[203:org.opendaylight.bgpcep.bgp-concepts:0.10.1]
        at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.next.hop.c.next.hop.Ipv6NextHopCase$StreamWriter.serialize(DataObjectSerializerPrototype.java) ~[203:org.opendaylight.bgpcep.bgp-concepts:0.10.1]
        at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry$DataObjectSerializerProxy.serialize(BindingNormalizedNodeCodecRegistry.java:351) ~[301:org.opendaylight.mdsal.binding-dom-codec:0.13.1]
        at org.opendaylight.mdsal.binding.dom.codec.util.ChoiceDispatchSerializer.serialize(ChoiceDispatchSerializer.java:46) ~[301:org.opendaylight.mdsal.binding-dom-codec:0.13.1]
        at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.path.attributes.Attributes$StreamWriter.serialize(DataObjectSerializerPrototype.java) ~[217:org.opendaylight.bgpcep.bgp-parser-api:0.10.1]
        at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.rev180329.l3vpn.ip.route.VpnRoute$StreamWriter.serialize(DataObjectSerializerPrototype.java) ~[207:org.opendaylight.bgpcep.bgp-l3vpn:0.10.1]
        at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry$DataObjectSerializerProxy.serialize(BindingNormalizedNodeCodecRegistry.java:351) ~[301:org.opendaylight.mdsal.binding-dom-codec:0.13.1]
        at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry.toNormalizedNode(BindingNormalizedNodeCodecRegistry.java:117) ~[301:org.opendaylight.mdsal.binding-dom-codec:0.13.1]
        at org.opendaylight.mdsal.binding.dom.adapter.BindingToNormalizedNodeCodec.toNormalizedNode(BindingToNormalizedNodeCodec.java:162) ~[300:org.opendaylight.mdsal.binding-dom-adapter:2.5.1]
        at org.opendaylight.controller.md.sal.binding.impl.AbstractWriteTransaction.put(AbstractWriteTransaction.java:37) ~[269:org.opendaylight.controller.sal-binding-broker-impl:1.8.1]
        at org.opendaylight.controller.md.sal.binding.impl.BindingDOMWriteTransactionAdapter.put(BindingDOMWriteTransactionAdapter.java:34) ~[269:org.opendaylight.controller.sal-binding-broker-impl:1.8.1]
        at org.opendaylight.protocol.bgp.rib.impl.EffectiveRibInWriter.writeRoutes(EffectiveRibInWriter.java:277) ~[223:org.opendaylig&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="32290">MDSAL-512</key>
            <summary>Exception encountered while processing vpnv6 route</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="2" iconUrl="https://jira.opendaylight.org/images/icons/priorities/critical.svg">High</priority>
                        <status id="5" iconUrl="https://jira.opendaylight.org/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Done</resolution>
                                        <assignee username="ajayslele">Ajay Lele</assignee>
                                    <reporter username="ajayslele">Ajay Lele</reporter>
                        <labels>
                    </labels>
                <created>Mon, 6 Jan 2020 18:37:26 +0000</created>
                <updated>Tue, 7 Jan 2020 12:43:31 +0000</updated>
                            <resolved>Tue, 7 Jan 2020 12:43:31 +0000</resolved>
                                    <version>Fluorine SR3</version>
                    <version>4.0.8</version>
                    <version>5.0.6</version>
                    <version>3.0.14</version>
                                    <fixVersion>6.0.0</fixVersion>
                    <fixVersion>4.0.9</fixVersion>
                    <fixVersion>5.0.7</fixVersion>
                    <fixVersion>3.0.15</fixVersion>
                                    <component>models</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="67613" author="ajayslele" created="Mon, 6 Jan 2020 18:39:04 +0000"  >&lt;ul&gt;
	&lt;li&gt;For IPv6 address-family, when next-hop address is an IPv4 address, it is encoded as IPv4-mapped IPv6 address as defined in&#160;&lt;a href=&quot;https://tools.ietf.org/html/rfc4659#section-3.2.1.2&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://tools.ietf.org/html/rfc4659#section-3.2.1.2&lt;/a&gt;. So this is how the route will be received from the router.&lt;/li&gt;
	&lt;li&gt;Now even in case of oxygen and prior where this exception was not seen, contents of operational RIB for such a route showed ipv6-next-hop with an IPv4 address value. This itself does not seem right&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;                                     &quot;attributes&quot;: {
                                        &quot;as-path&quot;: {},
                                        &quot;ipv6-next-hop&quot;: {
                                            &quot;global&quot;: &quot;10.176.0.235&quot;
                                        },&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;ul&gt;
	&lt;li&gt;What seems to be happening is that the code used to convert received byte array to IPv6 address uses&#160;&lt;a href=&quot;https://docs.oracle.com/javase/7/docs/api/java/net/Inet6Address.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://docs.oracle.com/javase/7/docs/api/java/net/Inet6Address.html&lt;/a&gt;&#160;and as mentioned in its &quot;Special IPv6 address section&quot;, it automatically converts IPv4-mapped IPv6 address into an IPv4 address&lt;/li&gt;
	&lt;li&gt;So the resultant&#160;Ipv6Address ends up having an IPv4 address in it (the validation is skipped during creation - refer to discussion in&#160;&lt;a href=&quot;https://bugs.opendaylight.org/show_bug.cgi?id=2825&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://bugs.opendaylight.org/show_bug.cgi?id=2825&lt;/a&gt;,&#160;&lt;a href=&quot;https://wiki.opendaylight.org/view/String_data_normalization_and_alternative_storage&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://wiki.opendaylight.org/view/String_data_normalization_and_alternative_storage&lt;/a&gt;,&#160;&lt;a href=&quot;https://git.opendaylight.org/gerrit/c/mdsal/+/34869&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/c/mdsal/+/34869&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Proposed fix is to change this logic such that an&#160;IPv4-mapped IPv6 address will get parsed into an IPv6 address. With this change, the operational RIB will show the corresponding IPv6 address in ipv6-next-hop field&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;                                    &quot;attributes&quot;: {
                                        &quot;as-path&quot;: {},
                                        &quot;ipv6-next-hop&quot;: {
                                            &quot;global&quot;: &quot;::ffff:ab0:eb&quot;
                                        },&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_11400" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i03qlj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>