/** * checksum verification is necessary for IPv6(i.e. acceptZero must be false) * * @param srcAddr srcAddr * @param dstAddr dstAddr * @param acceptZero acceptZero * @return true if the packet represented by this object has a valid checksum; false otherwise. */ public boolean hasValidChecksum(InetAddress srcAddr, InetAddress dstAddr, boolean acceptZero) { if (srcAddr == null || dstAddr == null) { StringBuilder sb = new StringBuilder(); sb.append("srcAddr: ").append(srcAddr).append(" dstAddr: ").append(dstAddr); throw new NullPointerException(sb.toString()); } if (!srcAddr.getClass().isInstance(dstAddr)) { StringBuilder sb = new StringBuilder(); sb.append("srcAddr: ").append(srcAddr).append(" dstAddr: ").append(dstAddr); throw new IllegalArgumentException(sb.toString()); } byte[] payloadData = payload != null ? payload.getRawData() : new byte[0]; short calculatedChecksum = header.calcChecksum(srcAddr, dstAddr, header.getRawData(), payloadData); if (calculatedChecksum == 0) { return true; } if (header.checksum == 0 && acceptZero) { return true; } return false; }
/** * checksum verification is necessary for IPv6(i.e. acceptZero must be false) * * @param srcAddr srcAddr * @param dstAddr dstAddr * @param acceptZero acceptZero * @return true if the packet represented by this object has a valid checksum; false otherwise. */ public boolean hasValidChecksum(InetAddress srcAddr, InetAddress dstAddr, boolean acceptZero) { if (srcAddr == null || dstAddr == null) { StringBuilder sb = new StringBuilder(); sb.append("srcAddr: ").append(srcAddr).append(" dstAddr: ").append(dstAddr); throw new NullPointerException(sb.toString()); } if (!srcAddr.getClass().isInstance(dstAddr)) { StringBuilder sb = new StringBuilder(); sb.append("srcAddr: ").append(srcAddr).append(" dstAddr: ").append(dstAddr); throw new IllegalArgumentException(sb.toString()); } byte[] payloadData = payload != null ? payload.getRawData() : new byte[0]; short calculatedChecksum = header.calcChecksum(srcAddr, dstAddr, header.getRawData(), payloadData); if (calculatedChecksum == 0) { return true; } if (header.checksum == 0 && acceptZero) { return true; } return false; }