@Override
public void handle(byte[] payload, byte[] header, Dot11MetaInformation meta) throws IllegalRawDataException {
tick();
Dot11ManagementFrame disassociationRequest = Dot11ManagementFrame.newPacket(payload, 0, payload.length);
String destination = "";
if(disassociationRequest.getHeader().getAddress1() != null) {
destination = disassociationRequest.getHeader().getAddress1().toString();
}
String transmitter = "";
if(disassociationRequest.getHeader().getAddress2() != null) {
transmitter = disassociationRequest.getHeader().getAddress2().toString();
}
short reasonCode = Dot11LeavingReason.extract(payload, header);
String reasonString = Dot11LeavingReason.lookup(reasonCode);
String message = transmitter + " is disassociating from " + destination + " (" + reasonString + ")";
nzyme.notify(
new Notification(message, meta.getChannel())
.addField(FieldNames.TRANSMITTER, transmitter)
.addField(FieldNames.DESTINATION, destination)
.addField(FieldNames.REASON_CODE, reasonCode)
.addField(FieldNames.REASON_STRING, reasonString)
.addField(FieldNames.SUBTYPE, "disassoc"),
meta
);
LOG.debug(message);
}