private static TcpPacket parse( IpPacket p, InetAddress source, InetAddress destination, int tcpLength, Buffer data) throws BufferUnderflowException { TcpPacket s = new TcpPacket(); s.ipPacket = p; s.tcpLength = tcpLength; s.sourceAddr = source; s.destinationAddr = destination; s.srcPort = data.getUnsignedShort(); s.dstPort = data.getUnsignedShort(); s.sessionKey = new TcpSessionKeyImpl(s.sourceAddr, s.destinationAddr, s.srcPort, s.dstPort); s.seq = data.getInt(); s.ack = data.getInt(); s.parseDataOffsetAndFlags(data); s.window = data.getUnsignedShort(); s.checksum = data.getUnsignedShort(); s.urgentPointer = data.getUnsignedShort(); s.parseOptions(data); s.parseData(data); return s; }