Uploaded image for project: 'OpenFlowPlugin'
  1. OpenFlowPlugin
  2. OPNFLWPLUG-375

When deleting flowEntries that use Mac Address masks, FlowRemovedTranslaton.java throws an exception

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved
    • Resolution: Done
    • None
    • None
    • General
    • None
    • Operating System: All
      Platform: All

    • 2776

    Description

      Using stable/helium.

      I've been creating flows that make use of Mac Address masks in the matching logic. When I delete these flow entries, I receive the following exceptions:

      2015-03-02 08:56:06.293 EST [OFmsgFinisher-0] WARN o.o.o.o.md.queue.TicketFinisherImpl - processing (translate, publish) of ticket failed
      java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Supplied value "ff:ff:ff:ff:ff:00:" does not match any of the permitted patterns [^[0-9a-fA-F]

      {2}(:[0-9a-fA-F]{2}

      )

      {5}$]
      at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:306) ~[na:na]
      at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:293) ~[na:na]
      at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116) ~[na:na]
      at org.opendaylight.openflowplugin.openflow.md.queue.TicketFinisherImpl.run(TicketFinisherImpl.java:49) ~[na:na]
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_71]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_71]
      at java.lang.Thread.run(Thread.java:745) [na:1.7.0_71]
      Caused by: java.lang.IllegalArgumentException: Supplied value "ff:ff:ff:ff:ff:00:" does not match any of the permitted patterns [^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}

      $]
      at com.google.common.base.Preconditions.checkArgument(Preconditions.java:119) ~[na:na]
      at org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress.<init>(MacAddress.java:47) ~[na:na]
      at org.opendaylight.openflowplugin.openflow.md.core.translator.FlowRemovedTranslator.fromMatch(FlowRemovedTranslator.java:241) ~[na:na]
      at org.opendaylight.openflowplugin.openflow.md.core.translator.FlowRemovedTranslator.translate(FlowRemovedTranslator.java:186) ~[na:na]
      at org.opendaylight.openflowplugin.openflow.md.core.translator.FlowRemovedTranslator.translate(FlowRemovedTranslator.java:143) ~[na:na]
      at org.opendaylight.openflowplugin.openflow.md.queue.TicketProcessorFactoryImpl.translate(TicketProcessorFactoryImpl.java:166) ~[na:na]
      at org.opendaylight.openflowplugin.openflow.md.queue.TicketProcessorFactoryImpl$1.run(TicketProcessorFactoryImpl.java:78) ~[na:na]
      ... 3 common frames omitted

      I've chase this to openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/FlowRemovedTranslator.java line 241:

      if (entry.isHasMask())

      { ethDst.setMask(new MacAddress(ByteUtil.bytesToHexstring(entry.getAugmentation(MaskMatchEntry.class).getMask(), ":"))); }

      Here's what I believe is happening
      1- The code is ATTEMPTING to create a new MacAddress (the CTOR requires a String)
      2- To create the string, the code attempts to parse an array of bytes into a string of the form: [0-9a-fA-F]

      {2}(:[0-9a-fA-F]{2}

      )

      {5}

      3- HOWEVER, the method 'bytesToHexstring is leaving a trailing ':' character which is causing the conversion to fail.

      It looks like this code was added in Nov of 2014.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            jimw@a-bb.net Jim West
            jimw@a-bb.net Jim West
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: