import java.util.LinkedHashMap;
import java.util.Map;
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
+import org.opendaylight.controller.sal.match.Match;
+import org.opendaylight.controller.sal.match.MatchType;
import org.opendaylight.controller.sal.utils.EtherTypes;
+import org.opendaylight.controller.sal.utils.NetUtils;
/**
* Class that represents the Ethernet frame objects
- *
- *
*/
public class Ethernet extends Packet {
private static final String DMAC = "DestinationMACAddress";
etherTypeClassMap.put(EtherTypes.ARP.shortValue(), ARP.class);
etherTypeClassMap.put(EtherTypes.IPv4.shortValue(), IPv4.class);
etherTypeClassMap.put(EtherTypes.LLDP.shortValue(), LLDP.class);
+ etherTypeClassMap.put(EtherTypes.VLANTAGGED.shortValue(), IEEE8021Q.class);
+ etherTypeClassMap.put(EtherTypes.OLDQINQ.shortValue(), IEEE8021Q.class);
+ etherTypeClassMap.put(EtherTypes.QINQ.shortValue(), IEEE8021Q.class);
+ etherTypeClassMap.put(EtherTypes.CISCOQINQ.shortValue(), IEEE8021Q.class);
}
private static Map<String, Pair<Integer, Integer>> fieldCoordinates = new LinkedHashMap<String, Pair<Integer, Integer>>() {
private static final long serialVersionUID = 1L;
put(ETHT, new ImmutablePair<Integer, Integer>(96, 16));
}
};
- private Map<String, byte[]> fieldValues;
+ private final Map<String, byte[]> fieldValues;
/**
* Default constructor that creates and sets the HashMap
return BitBufferHelper.getShort(fieldValues.get(ETHT));
}
+ public boolean isBroadcast(){
+ return NetUtils.isBroadcastMACAddr(getDestinationMACAddress());
+ }
+
+ public boolean isMulticast(){
+ return NetUtils.isMulticastMACAddr(getDestinationMACAddress());
+ }
+
/**
* Sets the destination MAC address for the current Ethernet object instance
* @param byte[] - the destinationMACAddress to set
}
@Override
- public int hashCode() {
- return HashCodeBuilder.reflectionHashCode(this);
+ public void populateMatch(Match match) {
+ match.setField(MatchType.DL_SRC, this.getSourceMACAddress());
+ match.setField(MatchType.DL_DST, this.getDestinationMACAddress());
+ match.setField(MatchType.DL_TYPE, this.getEtherType());
}
-
- @Override
- public boolean equals(Object obj) {
- return EqualsBuilder.reflectionEquals(this, obj);
- }
-
}