- When m_defrag() fails we have to free the mbuf ourselves.
- If the handshake input queue is full, we are responsible for dropping the packet.
Hmm, is m_defrag() really needed here? This is a very costly operation due to allocation. Because we only need to get "pkttype", maybe using m_pullup is enough?