/* * This file is part of jsFlow. * * Copyright (c) 2009 DE-CIX Management GmbH <http://www.de-cix.net> - All rights * reserved. * * Author: Thomas King <thomas.king@de-cix.net> * * This software is licensed under the Apache License, version 2.0. A copy of * the license agreement is included in this distribution. */ package net.decix.jsflow.collector; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; import java.util.Vector; import net.decix.jsflow.header.CounterRecordHeader; import net.decix.jsflow.header.ExpandedCounterSampleHeader; import net.decix.jsflow.header.ExpandedFlowSampleHeader; import net.decix.jsflow.header.FlowRecordHeader; import net.decix.jsflow.header.SampleDataHeader; import net.decix.jsflow.header.SFlowHeader; import net.decix.util.HeaderParseException; public class SFlowCollector { public static void main(String args[]) { try { DatagramSocket ds = new DatagramSocket(6343); while (true) { byte[] data = new byte[65536]; DatagramPacket dp = new DatagramPacket(data, data.length); ds.receive(dp); SFlowHeader rph = SFlowHeader.parse(dp.getData()); System.out.println(rph.getAddressAgent().toString()); Vector<SampleDataHeader> sdhs = rph.getSampleDataHeaders(); for (SampleDataHeader sdh : sdhs) { System.out.println("SampleDataHeader format: " + sdh.getSampleDataFormat()); if (sdh.getSampleDataFormat() == SampleDataHeader.EXPANDEDFLOWSAMPLE) { ExpandedFlowSampleHeader efs = sdh.getExpandedFlowSampleHeader(); Vector<FlowRecordHeader> frs = efs.getFlowRecords(); for (FlowRecordHeader fr : frs) { System.out.println("Flow record header format: " + fr.getFlowDataFormat()); System.out.println("Raw packet header protocol: " + fr.getRawPacketHeader().getHeaderProtocol()); } } if (sdh.getSampleDataFormat() == SampleDataHeader.EXPANDEDCOUNTERSAMPLE) { ExpandedCounterSampleHeader ecs = sdh.getExpandedCounterSampleHeader(); Vector<CounterRecordHeader> crs = ecs.getCounterRecords(); for (CounterRecordHeader cr : crs) { System.out.println("Counter record header format: " + cr.getCounterDataFormat()); if (cr.getEthernetInterfaceCounterHeader() != null) { System.out.println("Single collision frames: " + cr.getEthernetInterfaceCounterHeader().getDot3StatsSingleCollisionFrames()); } if (cr.getGenericInterfaceCounterHeader() != null) { System.out.println("Interface index: " + cr.getGenericInterfaceCounterHeader().getIfIndex()); System.out.println("Interface index: " + cr.getGenericInterfaceCounterHeader().getIfInUcastPkts()); } } } } } } catch (SocketException se) { se.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } catch (HeaderParseException hpe) { hpe.printStackTrace(); } } }