Package org.jnode.net

Examples of org.jnode.net.SocketBuffer


            regs.setReg16(SCBCmd, SCBMaskAll | RxStart);
            regs.waitForCmdDone();

            log.debug("Got a packet: Len=" + NumberUtils.hex(rxPacket.getCount()));

            final SocketBuffer skbuf = rxPacket.getPacket();
            driver.onReceive(skbuf);
        }
    }
View Full Code Here


        if (checksum == 0) {
            log.debug("No checksum set");
            this.checksumOk = true;
        } else {
            // Create the pseudo header for checksum calculation
            final SocketBuffer phdr = new SocketBuffer(12);
            phdr.insert(12);
            ipHdr.getSource().writeTo(phdr, 0);
            ipHdr.getDestination().writeTo(phdr, 4);
            phdr.set(8, 0);
            phdr.set(9, ipHdr.getProtocol());
            phdr.set16(10, tcpLength + headerLength);
            phdr.append(skbuf);

            final int ccs2 = IPv4Utils.calcChecksum(phdr, 0, headerLength + tcpLength + 12);
            this.checksumOk = (ccs2 == 0);
            if (!checksumOk) {
                log.debug("Found invalid TCP checksum 0x" + NumberUtils.hex(ccs2, 4) +
View Full Code Here

        return windowSize;
    }

    private int calcChecksum(SocketBuffer skbuf, int offset) {
        final IPv4Header ipHdr = (IPv4Header) skbuf.getNetworkLayerHeader();
        final SocketBuffer phdr = new SocketBuffer(12);
        phdr.insert(12);
        ipHdr.getSource().writeTo(phdr, 0);
        ipHdr.getDestination().writeTo(phdr, 4);
        phdr.set(8, 0);
        phdr.set(9, ipHdr.getProtocol());
        phdr.set16(10, tcpLength + headerLength);
        phdr.append(offset, skbuf);
        final int csLength = headerLength + tcpLength + 12;
        return IPv4Utils.calcChecksum(phdr, 0, csLength);
    }
View Full Code Here

        SocketBuffer getPacket() {
            int ln = getFrameLength();
            log.debug("packetlength: " + ln);
            byte[] buf = new byte[ln];
            System.arraycopy(data, dataOffs, buf, 0, ln);
            return new SocketBuffer(buf, 0, ln);
        }
View Full Code Here

            new TCPHeader(hdr.getDstPort(), hdr.getSrcPort(), 0, 0, hdr.getSequenceNr() + 1, 0,
                0);
        replyHdr.setFlags(TCPF_ACK | TCPF_RST);
        final IPv4Header replyIpHdr = new IPv4Header(ipHdr);
        replyIpHdr.swapAddresses();
        send(replyIpHdr, replyHdr, new SocketBuffer());
    }
View Full Code Here

     * Send this segment
     *
     * @param tcp
     */
    public void send(TCPProtocol tcp) throws SocketException {
        final SocketBuffer skbuf;
        if (hdr.getDataLength() > 0) {
            skbuf = buffer.createSocketBuffer(dataOffset, hdr.getDataLength());
        } else {
            skbuf = new SocketBuffer(0);
        }
        tcp.send(ipHdr, hdr, skbuf);
    }
View Full Code Here

    private static final int ARP_HEADER_LENGTH = 28;

    @Test
    public void testHeaderFromSocketBuffer() throws SocketException {
        SocketBuffer buffer = getSocketBuffer();
        ARPHeader header = new ARPHeader(buffer);
        assertEquals(ARP_HEADER_LENGTH, header.getLength());
        assertEquals(ARPOperation.ARP_REQUEST, header.getOperation());
        assertEquals(1, header.getHType());
        assertEquals(EthernetConstants.ETH_P_IP, header.getPType());
View Full Code Here

        assertEquals(1, header.getHType());
        assertEquals(EthernetConstants.ETH_P_IP, header.getPType());
    }

    private SocketBuffer getSocketBuffer() {
        SocketBuffer buffer = new SocketBuffer(ARP_HEADER_LENGTH);
        buffer.append(ARP_HEADER_LENGTH);
        buffer.set16(0, 1);
        buffer.set16(2, 0x800);
        buffer.set(4, 6);
        buffer.set(5, 4);
        buffer.set16(6, 1);
        buffer.set(8, 0);
        buffer.set(14, 0);
        buffer.set(18, 0);
        buffer.set(24, 0);
        return buffer;
    }
View Full Code Here

                currentDescriptor = 0;
            return null;
        } else if ((status & RxDescriptor.STATUS_STP) != 0 &&
                (status & RxDescriptor.STATUS_ENP) != 0) {
            byte[] buf = des.getDataBuffer();
            SocketBuffer skbuf = new SocketBuffer(buf, 0, buf.length);
            des.clearStatus();
            currentDescriptor = currentDescriptor + 1;
            if (currentDescriptor == length)
                currentDescriptor = 0;
            return skbuf;
View Full Code Here

*/
public class ChecksumTest {

    public static void main(String[] args) {

        SocketBuffer skbuf = new SocketBuffer();
        skbuf.insert(20);
        for (int i = 0; i < 20; i++) {
            skbuf.set(i, i);
        }
        skbuf.set16(10, 0);

        final int ccs = IPv4Utils.calcChecksum(skbuf, 0, 20);
        skbuf.set16(10, ccs);
        final int ccs2 = IPv4Utils.calcChecksum(skbuf, 0, 20);

        System.out.println("ccs=0x" + NumberUtils.hex(ccs) + ", ccs2=0x" + NumberUtils.hex(ccs2));

    }
View Full Code Here

TOP

Related Classes of org.jnode.net.SocketBuffer

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.