<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:31:20 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>[OPNFLWPLUG-11] set-vlan-action does not work</title>
                <link>https://jira.opendaylight.org/browse/OPNFLWPLUG-11</link>
                <project id="10155" key="OPNFLWPLUG">OpenFlowPlugin</project>
                    <description>&lt;p&gt;when set-vlan-action is used in a flow-add operation from restconf, no flow-mod message is sent to the switch. All other parameters of the flow with a different action.&lt;/p&gt;

&lt;p&gt;The following xml can be used to reproduce the problem:&lt;/p&gt;

&lt;p&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&amp;gt;&lt;br/&gt;
&amp;lt;flow xmlns=&quot;urn:opendaylight:flow:inventory&quot;&amp;gt;&lt;br/&gt;
    &amp;lt;strict&amp;gt;false&amp;lt;/strict&amp;gt;&lt;br/&gt;
    &amp;lt;instructions&amp;gt;&lt;br/&gt;
        &amp;lt;instruction&amp;gt;&lt;br/&gt;
                    &amp;lt;order&amp;gt;0&amp;lt;/order&amp;gt;&lt;br/&gt;
            &amp;lt;apply-actions&amp;gt;&lt;br/&gt;
                &amp;lt;action&amp;gt;&lt;br/&gt;
                    &amp;lt;order&amp;gt;0&amp;lt;/order&amp;gt;&lt;br/&gt;
                    &amp;lt;set-vlan-id-action&amp;gt;&lt;br/&gt;
                        &amp;lt;vlan-id&amp;gt;4000&amp;lt;/vlan-id&amp;gt;&lt;br/&gt;
                    &amp;lt;/set-vlan-id-action&amp;gt;&lt;br/&gt;
                &amp;lt;/action&amp;gt;&lt;br/&gt;
            &amp;lt;/apply-actions&amp;gt;&lt;br/&gt;
        &amp;lt;/instruction&amp;gt;&lt;br/&gt;
    &amp;lt;/instructions&amp;gt;&lt;br/&gt;
    &amp;lt;table_id&amp;gt;0&amp;lt;/table_id&amp;gt;&lt;br/&gt;
    &amp;lt;id&amp;gt;138&amp;lt;/id&amp;gt;&lt;br/&gt;
    &amp;lt;cookie_mask&amp;gt;10&amp;lt;/cookie_mask&amp;gt;&lt;br/&gt;
    &amp;lt;installHw&amp;gt;false&amp;lt;/installHw&amp;gt;&lt;br/&gt;
    &amp;lt;match&amp;gt;&lt;br/&gt;
        &amp;lt;ethernet-match&amp;gt;&lt;br/&gt;
            &amp;lt;ethernet-type&amp;gt;&lt;br/&gt;
                &amp;lt;type&amp;gt;2048&amp;lt;/type&amp;gt;&lt;br/&gt;
            &amp;lt;/ethernet-type&amp;gt;&lt;br/&gt;
        &amp;lt;/ethernet-match&amp;gt;&lt;br/&gt;
        &amp;lt;ipv4-destination&amp;gt;10.0.0.1/24&amp;lt;/ipv4-destination&amp;gt;&lt;br/&gt;
    &amp;lt;/match&amp;gt;&lt;br/&gt;
    &amp;lt;hard-timeout&amp;gt;12&amp;lt;/hard-timeout&amp;gt;&lt;br/&gt;
    &amp;lt;flags&amp;gt;FlowModFlags &lt;span class=&quot;error&quot;&gt;&amp;#91;_cHECKOVERLAP=false, _rESETCOUNTS=false, _nOPKTCOUNTS=false, _nOBYTCOUNTS=false, _sENDFLOWREM=false&amp;#93;&lt;/span&gt;&amp;lt;/flags&amp;gt;&lt;br/&gt;
    &amp;lt;cookie&amp;gt;10&amp;lt;/cookie&amp;gt;&lt;br/&gt;
    &amp;lt;idle-timeout&amp;gt;34&amp;lt;/idle-timeout&amp;gt;&lt;br/&gt;
    &amp;lt;flow-name&amp;gt;FooXf14&amp;lt;/flow-name&amp;gt;&lt;br/&gt;
    &amp;lt;priority&amp;gt;2&amp;lt;/priority&amp;gt;&lt;br/&gt;
    &amp;lt;barrier&amp;gt;false&amp;lt;/barrier&amp;gt;&lt;br/&gt;
&amp;lt;/flow&amp;gt;&lt;/p&gt;

&lt;p&gt;use the following URL:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://192.168.4.1:8080/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/0/flow/138&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://192.168.4.1:8080/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/0/flow/138&lt;/a&gt;&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: Mac OS&lt;br/&gt;
Platform: Macintosh&lt;/p&gt;</environment>
        <key id="27279">OPNFLWPLUG-11</key>
            <summary>set-vlan-action does not work</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                                <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="gaurav.bhagwani@ericsson.com">Gaurav Bhagwani</assignee>
                                    <reporter username="jmedved@cisco.com">Jan Medved</reporter>
                        <labels>
                    </labels>
                <created>Sat, 4 Jan 2014 06:20:22 +0000</created>
                <updated>Mon, 27 Sep 2021 09:00:59 +0000</updated>
                            <resolved>Fri, 24 Jan 2014 12:12:04 +0000</resolved>
                                                                    <component>General</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>7</watches>
                                                                                                                <comments>
                            <comment id="55036" author="msunal@cisco.com" created="Fri, 10 Jan 2014 16:04:17 +0000"  >&lt;p&gt;All values are put into a transaction correctly. It seems that bug is in another component - moved to md-sal&lt;/p&gt;</comment>
                            <comment id="55037" author="tony.tkacik@gmail.com" created="Tue, 21 Jan 2014 10:30:30 +0000"  >&lt;p&gt;Run this test against testProvider node foo:node:1, the data went through MD-SAL unchanged. Bug is probably somewhere down in the pipeline.&lt;/p&gt;

&lt;p&gt;PUT URI:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://127.0.0.1:8080/restconf/config/opendaylight-inventory:nodes/node/foo:node:1/table/0/flow/138&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://127.0.0.1:8080/restconf/config/opendaylight-inventory:nodes/node/foo:node:1/table/0/flow/138&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;XML:&lt;/p&gt;

&lt;p&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&amp;gt;&lt;br/&gt;
&amp;lt;flow xmlns=&quot;urn:opendaylight:flow:inventory&quot;&amp;gt;&lt;br/&gt;
    &amp;lt;strict&amp;gt;false&amp;lt;/strict&amp;gt;&lt;br/&gt;
    &amp;lt;instructions&amp;gt;&lt;br/&gt;
        &amp;lt;instruction&amp;gt;&lt;br/&gt;
                    &amp;lt;order&amp;gt;0&amp;lt;/order&amp;gt;&lt;br/&gt;
            &amp;lt;apply-actions&amp;gt;&lt;br/&gt;
                &amp;lt;action&amp;gt;&lt;br/&gt;
                    &amp;lt;order&amp;gt;0&amp;lt;/order&amp;gt;&lt;br/&gt;
                    &amp;lt;set-vlan-id-action&amp;gt;&lt;br/&gt;
                        &amp;lt;vlan-id&amp;gt;4000&amp;lt;/vlan-id&amp;gt;&lt;br/&gt;
                    &amp;lt;/set-vlan-id-action&amp;gt;&lt;br/&gt;
                &amp;lt;/action&amp;gt;&lt;br/&gt;
            &amp;lt;/apply-actions&amp;gt;&lt;br/&gt;
        &amp;lt;/instruction&amp;gt;&lt;br/&gt;
    &amp;lt;/instructions&amp;gt;&lt;br/&gt;
    &amp;lt;table_id&amp;gt;0&amp;lt;/table_id&amp;gt;&lt;br/&gt;
    &amp;lt;id&amp;gt;138&amp;lt;/id&amp;gt;&lt;br/&gt;
    &amp;lt;cookie_mask&amp;gt;10&amp;lt;/cookie_mask&amp;gt;&lt;br/&gt;
    &amp;lt;installHw&amp;gt;false&amp;lt;/installHw&amp;gt;&lt;br/&gt;
    &amp;lt;match&amp;gt;&lt;br/&gt;
        &amp;lt;ethernet-match&amp;gt;&lt;br/&gt;
            &amp;lt;ethernet-type&amp;gt;&lt;br/&gt;
                &amp;lt;type&amp;gt;2048&amp;lt;/type&amp;gt;&lt;br/&gt;
            &amp;lt;/ethernet-type&amp;gt;&lt;br/&gt;
        &amp;lt;/ethernet-match&amp;gt;&lt;br/&gt;
        &amp;lt;ipv4-destination&amp;gt;10.0.0.1/24&amp;lt;/ipv4-destination&amp;gt;&lt;br/&gt;
    &amp;lt;/match&amp;gt;&lt;br/&gt;
    &amp;lt;hard-timeout&amp;gt;12&amp;lt;/hard-timeout&amp;gt;&lt;br/&gt;
    &amp;lt;flags&amp;gt;&amp;lt;/flags&amp;gt;&lt;br/&gt;
    &amp;lt;cookie&amp;gt;10&amp;lt;/cookie&amp;gt;&lt;br/&gt;
    &amp;lt;idle-timeout&amp;gt;34&amp;lt;/idle-timeout&amp;gt;&lt;br/&gt;
    &amp;lt;flow-name&amp;gt;FooXf14&amp;lt;/flow-name&amp;gt;&lt;br/&gt;
    &amp;lt;priority&amp;gt;2&amp;lt;/priority&amp;gt;&lt;br/&gt;
    &amp;lt;barrier&amp;gt;false&amp;lt;/barrier&amp;gt;&lt;br/&gt;
&amp;lt;/flow&amp;gt;&lt;/p&gt;

&lt;p&gt;Log Output:&lt;/p&gt;

&lt;p&gt;2014-01-21 11:14:55.197 CET &lt;span class=&quot;error&quot;&gt;&amp;#91;md-sal-binding-commit-1&amp;#93;&lt;/span&gt; INFO  o.o.o.t.OpenflowpluginTestServiceProvider - addFlow - AddFlowInput [_flowRef=FlowRef [_value=InstanceIdentifier [path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node[key=NodeKey [_id=Uri &lt;span class=&quot;error&quot;&gt;&amp;#91;_value=foo:node:1&amp;#93;&lt;/span&gt;]], org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode, org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table[key=TableKey &lt;span class=&quot;error&quot;&gt;&amp;#91;_id=0&amp;#93;&lt;/span&gt;], org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow[key=FlowKey [_id=Uri &lt;span class=&quot;error&quot;&gt;&amp;#91;_value=138&amp;#93;&lt;/span&gt;]]]]], _flowTable=FlowTableRef [_value=InstanceIdentifier [path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node[key=NodeKey [_id=Uri &lt;span class=&quot;error&quot;&gt;&amp;#91;_value=foo:node:1&amp;#93;&lt;/span&gt;]], org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode, org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table[key=TableKey &lt;span class=&quot;error&quot;&gt;&amp;#91;_id=0&amp;#93;&lt;/span&gt;]]]], _barrier=false, _bufferId=null, _containerName=null, _cookieMask=10, _flags=FlowModFlags &lt;span class=&quot;error&quot;&gt;&amp;#91;_cHECKOVERLAP=false, _rESETCOUNTS=false, _nOPKTCOUNTS=false, _nOBYTCOUNTS=false, _sENDFLOWREM=false&amp;#93;&lt;/span&gt;, _flowName=FooXf14, _installHw=false, _instructions=Instructions [_instruction=[Instruction [_order=0, _key=InstructionKey &lt;span class=&quot;error&quot;&gt;&amp;#91;_order=0&amp;#93;&lt;/span&gt;, _instruction=ApplyActionsCase [_applyActions=ApplyActions [_action=[Action [_order=0, _key=ActionKey &lt;span class=&quot;error&quot;&gt;&amp;#91;_order=0&amp;#93;&lt;/span&gt;, _action=SetVlanIdActionCase [_setVlanIdAction=SetVlanIdAction [_vlanId=VlanId &lt;span class=&quot;error&quot;&gt;&amp;#91;_value=4000&amp;#93;&lt;/span&gt;, augmentation=[]], augmentation=[]], augmentation=[]]], augmentation=[]], augmentation=[]], augmentation=[]]], augmentation=[]], _match=Match [_ethernetMatch=EthernetMatch [_ethernetDestination=null, _ethernetSource=null, _ethernetType=EthernetType [_mask=null, _type=EtherType &lt;span class=&quot;error&quot;&gt;&amp;#91;_value=2048&amp;#93;&lt;/span&gt;, augmentation=[]], augmentation=[]], _icmpv4Match=null, _icmpv6Match=null, _inPhyPort=null, _inPort=null, _ipMatch=null, _layer3Match=Ipv4Match [_ipv4Destination=Ipv4Prefix &lt;span class=&quot;error&quot;&gt;&amp;#91;_value=10.0.0.1/24&amp;#93;&lt;/span&gt;, _ipv4Source=null, augmentation=[]], _layer4Match=null, _metadata=null, _protocolMatchFields=null, _tunnel=null, _vlanMatch=null, augmentation=[]], _outGroup=null, _outPort=null, _strict=false, _cookie=10, _hardTimeout=12, _idleTimeout=34, _priority=2, _tableId=0, _node=NodeRef [_value=InstanceIdentifier [path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node[key=NodeKey [_id=Uri &lt;span class=&quot;error&quot;&gt;&amp;#91;_value=foo:node:1&amp;#93;&lt;/span&gt;]]]]], _transactionUri=Uri &lt;span class=&quot;error&quot;&gt;&amp;#91;_value=BA-2&amp;#93;&lt;/span&gt;, augmentation=[]]&lt;/p&gt;

&lt;p&gt;2014-01-21 11:14:55.197 CET &lt;span class=&quot;error&quot;&gt;&amp;#91;md-sal-binding-commit-1&amp;#93;&lt;/span&gt; INFO  o.o.c.m.s.c.i.service.TwoPhaseCommit - Transaction: BA-2 Finished successfully.&lt;/p&gt;


&lt;p&gt;From log you could see that VlanAction was sent out of MD-SAL.&lt;/p&gt;

&lt;p&gt;SetVlanIdActionCase [_setVlanIdAction=SetVlanIdAction [_vlanId=VlanId &lt;span class=&quot;error&quot;&gt;&amp;#91;_value=4000&amp;#93;&lt;/span&gt;]&lt;/p&gt;</comment>
                            <comment id="55038" author="gaurav.bhagwani@ericsson.com" created="Wed, 22 Jan 2014 12:30:04 +0000"  >&lt;p&gt;Can it be confirmed please that are we testing this particular action on 1.0 switch or 1.3 switch since SetVlanIdAction is 1.0 specific&lt;/p&gt;</comment>
                            <comment id="55039" author="michal.polkorab@gmail.com" created="Wed, 22 Jan 2014 14:19:43 +0000"  >&lt;p&gt;I have debugged the serialization and found out that the problem is in the OF Plugin.&lt;/p&gt;

&lt;p&gt;Logs when debugging openflowjava:&lt;br/&gt;
2014-01-22 14:45:48.787 CET &lt;span class=&quot;error&quot;&gt;&amp;#91;nioEventLoopGroup-8-2&amp;#93;&lt;/span&gt; WARN  o.o.o.p.i.u.InstructionsSerializer - ACTIONS IN APPLY INSTRUCTIONS NOT NULL&lt;br/&gt;
2014-01-22 14:45:48.787 CET &lt;span class=&quot;error&quot;&gt;&amp;#91;nioEventLoopGroup-8-2&amp;#93;&lt;/span&gt; WARN  o.o.o.p.impl.util.ActionsSerializer - COMPUTE LENGTH IN ACTIONS&lt;br/&gt;
2014-01-22 14:45:48.787 CET &lt;span class=&quot;error&quot;&gt;&amp;#91;nioEventLoopGroup-8-2&amp;#93;&lt;/span&gt; WARN  o.o.o.p.impl.util.ActionsSerializer - ACTIONSLIST NOT NULL&lt;br/&gt;
2014-01-22 14:45:48.787 CET &lt;span class=&quot;error&quot;&gt;&amp;#91;nioEventLoopGroup-8-2&amp;#93;&lt;/span&gt; WARN  o.o.o.p.impl.util.ActionsSerializer - ACTIONSLIST IS EMPTY&lt;br/&gt;
2014-01-22 14:45:48.787 CET &lt;span class=&quot;error&quot;&gt;&amp;#91;nioEventLoopGroup-8-2&amp;#93;&lt;/span&gt; WARN  o.o.o.p.i.u.InstructionsSerializer - ACTIONS IN APPLY INSTRUCTIONS NOT NULL - LENGTH: 0&lt;/p&gt;


&lt;p&gt;Problem is in the ActionConvertor, where the received action was SetVlanIdActionCase [_setVlanIdAction=SetVlanIdAction [_vlanId=VlanId &lt;span class=&quot;error&quot;&gt;&amp;#91;_value=4000&amp;#93;&lt;/span&gt;]&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;this action is used in the OF 1.0, and in the OF 1.3 causes following exception:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;2014-01-22 14:45:48.779 CET &lt;span class=&quot;error&quot;&gt;&amp;#91;md-sal-binding-commit-16&amp;#93;&lt;/span&gt; ERROR o.o.o.o.m.c.s.c.ActionConvertor - Unknown Action Type for the Version&lt;/p&gt;



&lt;p&gt;I am not familiar with the md-sal&apos;s models, but it is probably needed to choose the correct action depending on the version first, and then finding the corresponding action. (In this case I believe it should have been SetField action with VlanId oxm-field)&lt;/p&gt;



&lt;p&gt;NOTE:&lt;br/&gt;
Looking into FlowConvertor.java:&lt;/p&gt;

&lt;p&gt;if (flow.getInstructions() != null) &lt;/p&gt;
{
            flowMod.setInstructions(toInstructions(flow.getInstructions(), version,datapathid));
            flowMod.setActionsList(getActionsList(flow.getInstructions(), version,datapathid));
        }

&lt;p&gt;actions should be filled only in case of OF 1.0, instructions in case of OF 1.3.&lt;/p&gt;</comment>
                            <comment id="55040" author="michal.polkorab@gmail.com" created="Wed, 22 Jan 2014 14:20:48 +0000"  >&lt;ul&gt;
	&lt;li&gt;this happens when using CpQd OF 1.3 switch&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="55041" author="gaurav.bhagwani@ericsson.com" created="Wed, 22 Jan 2014 14:34:01 +0000"  >&lt;p&gt;With Cpqd 1.3 , action set-vlan-id wont work , since set-vlan-id is 1.0 application , Hence plugin throws exception  ERROR o.o.o.o.m.c.s.c.ActionConvertor - Unknown Action Type for the Version&lt;/p&gt;</comment>
                            <comment id="55042" author="michal.polkorab@gmail.com" created="Wed, 22 Jan 2014 14:44:09 +0000"  >&lt;p&gt;But MD-sal models are protocol agnostic - so they can&apos;t model all openflow specific action types. That&apos;s why it should be translated / converted depending on the version. &lt;/p&gt;

&lt;p&gt;Because Vlan field makes sense in the OF 1.3 either, so message like this will be used.&lt;/p&gt;

&lt;p&gt;Michal&lt;/p&gt;</comment>
                            <comment id="55043" author="gaurav.bhagwani@ericsson.com" created="Fri, 24 Jan 2014 12:12:04 +0000"  >&lt;p&gt;raised review for the bug :&lt;br/&gt;
&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/4697/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/4697/&lt;/a&gt;&lt;/p&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_10208" key="com.atlassian.jira.plugin.system.customfieldtypes:textfield">
                        <customfieldname>External issue ID</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>268</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10201" key="com.atlassian.jira.plugin.system.customfieldtypes:url">
                        <customfieldname>External issue URL</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[https://bugs.opendaylight.org/show_bug.cgi?id=268]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i02yin:</customfieldvalue>

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