package org.krakenapps.pcap.decoder.smb.trans2parser;
import org.krakenapps.pcap.decoder.netbios.NetBiosNameCodec;
import org.krakenapps.pcap.decoder.smb.SmbSession;
import org.krakenapps.pcap.decoder.smb.TransData;
import org.krakenapps.pcap.decoder.smb.trans2req.SetPathInformationRequest;
import org.krakenapps.pcap.decoder.smb.trans2resp.SetPathInformationResponse;
import org.krakenapps.pcap.decoder.smb.transparser.TransParser;
import org.krakenapps.pcap.util.Buffer;
import org.krakenapps.pcap.util.ByteOrderConverter;
public class SetPathInformationParser implements TransParser{
@Override
public TransData parseRequest(Buffer setupBuffer , Buffer parameterBuffer , Buffer dataBuffer) {
SetPathInformationRequest transData = new SetPathInformationRequest();
transData.setSubcommand(ByteOrderConverter.swap(setupBuffer.getShort()));
transData.setInformationLevel(ByteOrderConverter.swap(parameterBuffer.getShort()));
transData.setReserved(ByteOrderConverter.swap(parameterBuffer.getInt()));
transData.setFileName(NetBiosNameCodec.readSmbUnicodeName(parameterBuffer));
//read Data
//follow Informationlevel
return transData;
}
@Override
public TransData parseResponse(Buffer setupBuffer , Buffer parameterBuffer , Buffer dataBuffer , SmbSession session) {
SetPathInformationResponse transData = new SetPathInformationResponse();
transData.setEaErrorOffset(ByteOrderConverter.swap(parameterBuffer.getShort()));
return transData;
}
}