X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fsal%2Fapi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fmatch%2FMatch.java;h=4dcf2b3c3764790e3aab70da16512573b8c3975a;hb=84ca16196357ad899e00eceae27ef75eaf899d14;hp=2ead8cdbc4b7e645b6d6a0a6d0ae8039c08923f2;hpb=59cc8f34c24d81a8890a94c11dedd4b21caa0adf;p=controller.git diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/Match.java b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/Match.java index 2ead8cdbc4..4dcf2b3c37 100644 --- a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/Match.java +++ b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/Match.java @@ -38,8 +38,8 @@ import org.opendaylight.controller.sal.utils.NetUtils; @XmlRootElement @XmlAccessorType(XmlAccessType.NONE) public class Match implements Cloneable, Serializable { - private static final long serialVersionUID = 1L; - private static final Map reversableMatches; + private static final long serialVersionUID = 1L; + private static final Map reversableMatches; static { Map map = new HashMap(); map.put(MatchType.DL_SRC, MatchType.DL_DST); @@ -67,9 +67,9 @@ public class Match implements Cloneable, Serializable { * Generic setter for frame/packet/message's header fields against which to match * Note: For MAC addresses, please pass the cloned value to this function * - * @param type packet's header field type - * @param value field's value to assign to the match - * @param mask field's bitmask to apply to the match (has to be of the same class type of value) + * @param type packet's header field type + * @param value field's value to assign to the match + * @param mask field's bitmask to apply to the match (has to be of the same class type of value) */ public void setField(MatchType type, Object value, Object mask) { MatchField field = new MatchField(type, value, mask); @@ -83,8 +83,8 @@ public class Match implements Cloneable, Serializable { * Generic setter for frame/packet/message's header fields against which to match * Note: For MAC addresses, please pass the cloned value to this function * - * @param type packet's header field type - * @param value field's value to assign to the match + * @param type packet's header field type + * @param value field's value to assign to the match */ public void setField(MatchType type, Object value) { MatchField field = new MatchField(type, value); @@ -117,7 +117,7 @@ public class Match implements Cloneable, Serializable { /** * Generic getter for fields against which the match is programmed * - * @param type frame/packet/message's header field type + * @param type frame/packet/message's header field type * @return */ public MatchField getField(MatchType type) { @@ -137,7 +137,7 @@ public class Match implements Cloneable, Serializable { /** * Returns the list of MatchType fields the match is set for * - * @return List of individual MatchType fields. + * @return List of individual MatchType fields. */ public List getMatchesList() { return new ArrayList(fields.keySet()); @@ -146,13 +146,13 @@ public class Match implements Cloneable, Serializable { /** * Returns the list of MatchFields the match is set for * - * @return List of individual MatchField values. + * @return List of individual MatchField values. */ @XmlElement(name="matchField") public List getMatchFields() { - return new ArrayList(fields.values()); + return new ArrayList(fields.values()); } - + /** * Returns whether this match is for an IPv6 flow */ @@ -225,13 +225,14 @@ public class Match implements Cloneable, Serializable { Match reverse = this.clone(); // Flip symmetric fields - for (Map.Entry entry : Match.reversableMatches - .entrySet()) { + for (Map.Entry entry : Match.reversableMatches.entrySet()) { MatchType from = entry.getKey(); MatchType to = entry.getValue(); if (this.isPresent(from)) { - reverse.setField(to, this.getField(from).getValue(), this - .getField(from).getMask()); + reverse.setField(to, this.getField(from).getValue(), this.getField(from).getMask()); + if (!this.isPresent(to)) { + reverse.clearField(from); + } } }