if (myAddrInfo != null) { shouldProcess = myAddrInfo.contains(dstAddr); } else {   shouldProcess = !skbuf.getLinkLayerHeader() .getDestinationAddress().isBroadcast(); }
shouldProcess = !skbuf.getLinkLayerHeader() .getDestinationAddress().isBroadcast();
    public void receive(SocketBuffer skbuf, NetDeviceAPI deviceAPI)            throws SocketException {        // Update statistics        stat.ipackets.inc();        // Get IP header        final IPv4Header hdr = new IPv4Header(skbuf);        if (!hdr.isChecksumOk()) {            stat.badsum.inc();            //log.debug("Ignored IP packet with invalid checksum");            return;        }        // Set the header object in the buffer-field        skbuf.setNetworkLayerHeader(hdr);        // Remove header from skbuf-data        skbuf.pull(hdr.getLength());        // Trim the end of the message, to we have a valid length        skbuf.trim(hdr.getDataLength());        // Now test if the size of the buffer equals the datalength in the        // header, if now ignore the packet        if (skbuf.getSize() < hdr.getDataLength()) {            stat.badlen.inc();            //log.debug("Ignored IP packet, mismatch between datalength and            // buffersize");            return;        }        // Update the ARP cache for the source address        updateARPCache(skbuf.getLinkLayerHeader().getSourceAddress(), hdr                .getSourceAddress());        // Get my IP address        final IPv4ProtocolAddressInfo myAddrInfo = (IPv4ProtocolAddressInfo) deviceAPI                .getProtocolAddressInfo(getProtocolID());        if (myAddrInfo == null) {            stat.nodevaddr.inc();        }        // Should I process this packet, or is it for somebody else?        final IPv4Address dstAddr = hdr.getDestination();        final boolean shouldProcess;        if (dstAddr.isBroadcast()) {            shouldProcess = true;        } else {            if (myAddrInfo != null) {                shouldProcess = myAddrInfo.contains(dstAddr);            } else {                // I don't have an IP address yet, if the linklayer says                // it is for me, we'll process it, otherwise we'll drop it.                shouldProcess = !skbuf.getLinkLayerHeader()                        .getDestinationAddress().isBroadcast();            }        }        if (!shouldProcess) {        //log.debug("IPPacket not for me, ignoring (dst=" + dstAddr + ")");        return; }        // Is it a fragment?        if (hdr.isFragment()) {            // Yes it is a fragment            stat.fragments.inc();            deliverFragment(hdr, skbuf);        } else {            // It is a complete packet, find the protocol handler            // and let it do the rest            deliver(hdr, skbuf);        }        // Do a cleanup of the fragmentlist from time to time        final long now = System.currentTimeMillis();        if ((now - lastFragmentCleanup) >= (IP_FRAGTIMEOUT * 2)) {            removeDeadFragments();        }    }