Package com.voytechs.jnetstream.primitive

Examples of com.voytechs.jnetstream.primitive.IpAddressPrimitive


    /** @return a Flow object corresponding to the next packet in the trace file */
    public Flow next() {
        Flow flow;
        Device sourceDevice;
        Device destinationDevice;
        IpAddressPrimitive source = null;
        IpAddressPrimitive destination = null;
        MacAddressPrimitive src = null;
        MacAddressPrimitive dst = null;
        int etherProtocol = -1;
        int ipProtocol = -1;
        int srcPort = -1;
        int dstPort = -1;
       
        try {
           
            /* Aligns the position of the stream at beginning of packet */
            in.nextPacket();
           
            /* Returns the name of the first header */
            String linkType = in.getLinkType();
            int length = (int)in.getPacketLength();
            long timestamp = in.getCaptureTimestamp().getTime();
           
            if (linkType.equals("Ethernet") == true) {
               
                dst = new MacAddressPrimitive();
                dst.setValue(in);
               
                src = new MacAddressPrimitive();
                src.setValue(in);
               
                etherProtocol = in.readUnsignedShort();
               
                // Now check if its IP protocol
                if (etherProtocol == 0x800) {
                    int version =       in.readBits(4);
                    int hlen =          in.readBits(4);
                    int precedence =    in.readBits(3);
                    //int delay =         in.readBits(1);
                    //int throughtput =   in.readBits(1);
                    //int reliability =   in.readBits(1);
                    //in.readBits(2);     // Reserved 2 bits
                   
                    //int ipLength =      in.readUnsignedShort();
                    //int id =            in.readUnsignedShort();
                   
                    //in.readBits(1);     // Reserved 1 flag bit
                   
                    //int doNotFragment = in.readBits(1);
                    //int moreFragments = in.readBits(1);
                   
                    in.readBits(32);
                    in.readBits(8);
                    int offset =        in.readBits(13);
                    int timeToLive =    in.readUnsignedByte();
                   
                    ipProtocol =    in.readUnsignedByte();
                    int checksum =      in.readUnsignedShort();
                   
                    source = new IpAddressPrimitive();
                    source.setValue(in);
                   
                    destination = new IpAddressPrimitive();
                    destination.setValue(in);
                   
                    // Skip all the options
                    if ( hlen > 5 )
                        in.readBits((hlen - 5) * 32);
                   
                    //logger.debug("Ethernet " + src + " -> " + dst);
                    //logger.debug("IP " + source + " -> " + destination);
                   
                    if (ipProtocol == 6) {
                        srcPort = in.readUnsignedShort();
                        dstPort = in.readUnsignedShort();
                        long seqNumber = in.readUnsignedInt();
                        long ackNumber = in.readUnsignedInt();
                       
                        //int ipOffset = in.readBits(4);
                        // reserved
                        //in.readBits(6);
                        //int flags = in.readBits(6);
                        //int window = in.readUnsignedShort();
                       
                        in.readBits(32);
                        if ( offset > 5 )
                            in.readBits((offset - 5) * 32);
                        logger.debug("TCP: " + source + "(" + srcPort + ") -> "
                                + destination + "(" + dstPort + ")");
                       
                    } else if (ipProtocol == 17) {
                        srcPort = in.readUnsignedShort();
                        dstPort = in.readUnsignedShort();
                       
                        //int udpLength = in.readUnsignedShort();
                        //int udpChecksum = in.readUnsignedShort();
                        in.readBits(32);
                        logger.debug("UDP: " + source + "(" + srcPort + ") -> "
                                + destination + "(" + dstPort + ")");
                       
                    } else { // For all other IP protocols display number
                        logger.debug(
                                "IP: " + source + " -> " + destination + " protocol=0x"
                                + Integer.toHexString(ipProtocol) );
                    }
                    sourceDevice = new Device(InetAddress.getByName(source.toString()), new EthernetAddress(src.toString()));
                    destinationDevice = new Device(InetAddress.getByName(destination.toString()), new EthernetAddress(dst.toString()));
                   
                    return new Flow(timestamp, sourceDevice, destinationDevice, etherProtocol, ipProtocol, srcPort, dstPort, length);
                   
                } else {
                    logger.debug("Ethernet " + src + " -> " + dst
View Full Code Here

TOP

Related Classes of com.voytechs.jnetstream.primitive.IpAddressPrimitive

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.