Error when installing flow with ArbitraryMask

Vincent Jahjah <vincent_jahjah@...>

Hello ODLers,

I have been using OpenFlowPlugin a bit, and I have been noticing strange behavior regarding the rules I've been installing in the newer version of my code.

I have been successfully installing flows with ArbitraryBitMask on ipv4 addresses, but I have found that some such specific flows were causing errors in openflowplugin.

Here is the code relevant to the error:

Here are the errors I get every time I install a rule that walks through these lines:

Explaination: I may or may not know the IP of the flows. If I do not know the IP of the flows, I put an "any" kind of mask that is scattered across the least significant n bits of the unknown ip addresses.

If the IP address is known, typically, I will not set a mask, and I will put the known address instead. This may lead to having the "set" the fields twice, overwriting the previous values... but the resulting values always seem clean. Last attempt, I printed the contents of my matcher, and got the following:

(first flow installed: the known address was injected, which caused an error)

SRC: Ipv4Address [_value=] DEST: Ipv4Address [_value=]
SRCM:DottedQuad [_value=] DESTM: DottedQuad [_value=]

(second flow installed: I purposefully commented the lines that would set the destination, resulting in null destination fields. This did not cause any errors. I know this from experiment, although it was not obvious with this experiment alone.)
SRC: Ipv4Address [_value=] DEST: null
SRCM:DottedQuad [_value=] DESTM: null

Interestingly, if I invert the values, I still get an error, and still an error concerning the destination.

The flows that don't fail are installed correctly, as they are shown by "ovs-ofctl dump-flows".

... My question is... what's wrong here? Obviously, "" and "" are valid Ipv4Addresses and DottedQuads. They are by no means "malformed".

Why would the flow fail to install? What is malformed?