Package org.jnode.net

Examples of org.jnode.net.SocketBuffer


            final DeviceManager dm = InitialNaming.lookup(DeviceManager.NAME);
            final Device dev = dm.getDevice(devId);
            final NetDeviceAPI api = dev.getAPI(NetDeviceAPI.class);
            final EthernetAddress mac = (EthernetAddress) api.getAddress();

            SocketBuffer skbuf = new SocketBuffer();
            skbuf.insert(28);
            skbuf.set16(0, 0x0001); // Hardware type
            skbuf.set16(2, 0x0800); // Protocol type
            skbuf.set(4, 6); // Hardware address size
            skbuf.set(5, 4); // Protocol address size
            skbuf.set16(6, 0x01); // Operation APR request
            mac.writeTo(skbuf, 8); // Source mac
            skbuf.set32(14, 0xc0a8c853); // Source IP
            skbuf.set32(14, 0xc0a8c801); // Target IP

            // Prefix ethernet header
            skbuf.insert(14);
            // Set dest address
            EthernetAddress dst = new EthernetAddress("ff-ff-ff-ff-ff-ff");
            dst.writeTo(skbuf, 0);

            // Set packet type
            skbuf.set16(12, 0x0806);

            //api.transmit(skbuf);

        } catch (Throwable ex) {
            ex.printStackTrace();
View Full Code Here


     * Gets the packet data of UPD with the current index into a SocketBuffer
     */

    public SocketBuffer getPacket(int _length) {
        final int updOffset = firstUPDOffset + index;
        final SocketBuffer skbuf = new SocketBuffer();

        if (_length > 0) {
            skbuf.append(data, updOffset + 4, _length - 4);
        }

        index = (index + _length + 4 + 3) & ~3;
        index &= (RX_BUF_SIZE - 1);

View Full Code Here

        for (int i = 0; i < nrFrames; i++) {
            final int pktStatus = rxRing.getPktStatus(i);
            if (pktStatus != 0) {
                //log.debug("PktStatus[" + NumberUtils.hex(i, 2) + "]=0x" + NumberUtils.hex(pktStatus));
                if ((pktStatus & upComplete) != 0) {
                    final SocketBuffer skbuf = rxRing.getPacket(i);
                    try {
                        //log.debug("Read packet at index 0x" + NumberUtils.hex(i));
                        driver.onReceive(skbuf);
                    } catch (NetworkException ex) {
                        log.debug("Error in onReceive", ex);
View Full Code Here

                // Enable interrupts
                setReg16(REG_INTR_MASK, INTR_MASK);
                return;
            } else {
                final SocketBuffer skbuf = rxRing.getPacket(pktLen);

                try {
                    if (skbuf.getSize() > 0)
                        driver.onReceive(skbuf);
                } catch (NetworkException e) {
                    e.printStackTrace(); // To change body of catch statement
                                            // use Options | File
                    // Templates.
View Full Code Here

    public SocketBuffer getPacket(int index) {
        final int updOffset = firstUPDOffset + (index * UPD_SIZE);
        final int frameOffset = firstFrameOffset + (index * FRAME_SIZE);
        final int pktStatus = mem.getInt(updOffset + 4);
        final int pktLen = pktStatus & upPktLenMask;
        final SocketBuffer skbuf = new SocketBuffer();
        skbuf.append(data, frameOffset, pktLen);
        return skbuf;
    }
View Full Code Here

                if (!this.flood) {
                    this.wait = true;
                }

                SocketBuffer packet = new SocketBuffer();
                packet.insert(this.size);
                ICMPEchoHeader transportHeader = new ICMPEchoHeader(id_count, seq_count);
                transportHeader.prefixTo(packet);

                Request r =
                        new Request(this.stat, this.timeout, System.currentTimeMillis(), id_count,
View Full Code Here

        final int ptype = address.getType();

        final ARPHeader hdr =
            new ARPHeader(srcHwAddr, myAddress, trgHwAddr, address, op, hwtype, ptype, EthernetConstants.ETH_ALEN,
                IPv4_PROTOCOL_SIZE);
        final SocketBuffer skbuf = new SocketBuffer();
        skbuf.setProtocolID(EthernetConstants.ETH_P_ARP);
        hdr.prefixTo(skbuf);

        api.transmit(skbuf, trgHwAddr);
    }
View Full Code Here

        } else {
            if (flist.isAlive()) {
                flist.add(skbuf);
                if (flist.isComplete()) {
                    // The fragmentlist is now complete, deliver it
                    final SocketBuffer pbuf = flist.getPacket();
                    final IPv4Header phdr = (IPv4Header) pbuf.getNetworkLayerHeader();
                    stat.reassembled.inc();
                    deliver(phdr, pbuf);
                }
            } else {
                // Timeout of fragmentlist, destroy it
View Full Code Here

            log.debug("No checksum set");
            this.checksumOk = true;
        } else {
            // Create the pseudo header for checksum calculation
            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, udpLength);
            phdr.append(skbuf);
            final int ccs2 = IPv4Utils.calcChecksum(phdr, 0, udpLength + 12);
            this.checksumOk = (ccs2 == 0);
            if (!checksumOk) {
                log.debug("Found invalid UDP checksum 0x" + NumberUtils.hex(ccs2, 4));
            }
View Full Code Here

        return "UDP srcPort=" + srcPort + ", dstPort=" + dstPort + ", dataLength=" + getDataLength();
    }

    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, udpLength);
        phdr.append(offset, skbuf);
        final int csLength = udpLength + 12;
        return IPv4Utils.calcChecksum(phdr, 0, csLength);
    }
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.