/* * Copyright 2011 Future Systems, Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.krakenapps.pcap.decoder.netbios; import org.krakenapps.pcap.decoder.netbios.rr.SessionKeepAlive; import org.krakenapps.pcap.decoder.netbios.rr.SessionMessage; import org.krakenapps.pcap.decoder.netbios.rr.SessionNegativeResponse; import org.krakenapps.pcap.decoder.netbios.rr.SessionPositiveResponse; import org.krakenapps.pcap.decoder.netbios.rr.SessionReassembledData; import org.krakenapps.pcap.decoder.netbios.rr.SessionRequest; import org.krakenapps.pcap.decoder.netbios.rr.SessionRetargetResponse; import org.krakenapps.pcap.util.Buffer; public class NetBiosSessionService { public NetBiosSessionPacket parseTx(Buffer b) { NetBiosSessionHeader header = NetBiosSessionHeader.parse(b); NetBiosSessionData data = null; switch (header.getType()) { case SessionMessage: data = SessionMessage.parse(b); break; case SessionRequest: data = SessionRequest.parse(b); break; case SessionKeepAlive: data = SessionKeepAlive.parse(b); break; case SessionReassembled: data = SessionReassembledData.parse(b); break; default: throw new IllegalStateException("invalid tx type: " + header.getType()); } return new NetBiosSessionPacket(header, data); } public NetBiosSessionPacket parseRx(Buffer b) { NetBiosSessionHeader header = NetBiosSessionHeader.parse(b); NetBiosSessionData data = null; switch (header.getType()) { case PositiveSessionResponse: // positive session response data = SessionPositiveResponse.parse(b); break; case NegativeSessionResponse: data = SessionNegativeResponse.parse(b); break; case RetargetSessionResponse: data = SessionRetargetResponse.parse(b); break; case SessionKeepAlive: data = SessionKeepAlive.parse(b); break; case SessionMessage: data = SessionMessage.parse(b); break; case SessionReassembled: data = SessionReassembledData.parse(b); break; default: throw new IllegalStateException("invalid rx type: " + header.getType()); } return new NetBiosSessionPacket(header, data); } }