Skip to Content.
Sympa Menu

ndt-dev - [ndt-dev] [ndt] r768 committed - Merging in branch kkumar_code_organize into trunk. This branch has cod...

Subject: NDT-DEV email list created

List archive

[ndt-dev] [ndt] r768 committed - Merging in branch kkumar_code_organize into trunk. This branch has cod...


Chronological Thread 
  • From:
  • To:
  • Subject: [ndt-dev] [ndt] r768 committed - Merging in branch kkumar_code_organize into trunk. This branch has cod...
  • Date: Mon, 30 Apr 2012 20:47:28 +0000

Revision: 768
Author:

Date: Mon Apr 30 13:46:39 2012
Log: Merging in branch kkumar_code_organize into trunk. This branch has code documentation and better organized codebase, and a new protocol logging functionality
http://code.google.com/p/ndt/source/detail?r=768

Added:
/trunk/Applet/Message.java
/trunk/Applet/MessageType.java
/trunk/Applet/NDTConstants.java
/trunk/Applet/NDTUtils.java
/trunk/Applet/NewFrame.java
/trunk/Applet/OsfwWorker.java
/trunk/Applet/Protocol.java
/trunk/Applet/ResultsTextPane.java
/trunk/Applet/StatusPanel.java
/trunk/Applet/UserAgentTools.java
/trunk/src/heuristics.c
/trunk/src/heuristics.h
/trunk/src/ndtptestconstants.c
/trunk/src/ndtptestconstants.h
/trunk/src/runningtest.c
/trunk/src/runningtest.h
/trunk/src/strlutils.c
/trunk/src/strlutils.h
/trunk/src/test_c2s_srv.c
/trunk/src/test_mid_srv.c
/trunk/src/test_results_clt.c
/trunk/src/test_results_clt.h
/trunk/src/test_s2c_srv.c
/trunk/src/tests_srv.h
Deleted:
/trunk/Admin/Makefile.in
/trunk/Applet/Makefile.in
/trunk/Makefile.in
/trunk/aclocal.m4
/trunk/conf/Makefile.in
/trunk/config.h.in
/trunk/configure
/trunk/doc/Makefile.in
/trunk/janalyze/Makefile.in
/trunk/src/Makefile.in
Modified:
/trunk
/trunk/Applet/Makefile.am
/trunk/Applet/Tcpbw100.java
/trunk/FILES
/trunk/src/Makefile.am
/trunk/src/analyze.c
/trunk/src/clt_tests.h
/trunk/src/fakewww.c
/trunk/src/genplot.c
/trunk/src/logging.c
/trunk/src/logging.h
/trunk/src/mrange.c
/trunk/src/ndt_odbc.c
/trunk/src/ndt_odbc.h
/trunk/src/network.c
/trunk/src/network.h
/trunk/src/protocol.c
/trunk/src/protocol.h
/trunk/src/test_c2s_clt.c
/trunk/src/test_meta.h
/trunk/src/test_meta_clt.c
/trunk/src/test_meta_srv.c
/trunk/src/test_mid_clt.c
/trunk/src/test_s2c_clt.c
/trunk/src/test_sfw.h
/trunk/src/test_sfw_clt.c
/trunk/src/test_sfw_srv.c
/trunk/src/testoptions.c
/trunk/src/testoptions.h
/trunk/src/tr-mkmap.c
/trunk/src/tr-tree.c
/trunk/src/tr-tree.h
/trunk/src/tr-tree6.c
/trunk/src/troute.c
/trunk/src/troute6.c
/trunk/src/usage.c
/trunk/src/utils.c
/trunk/src/utils.h
/trunk/src/varinfo.h
/trunk/src/viewtrace.c
/trunk/src/web100-admin.c
/trunk/src/web100-admin.h
/trunk/src/web100-pcap.c
/trunk/src/web100-util.c
/trunk/src/web100clt.c
/trunk/src/web100srv.c
/trunk/src/web100srv.h

=======================================
--- /dev/null
+++ /trunk/Applet/Message.java Mon Apr 30 13:46:39 2012
@@ -0,0 +1,95 @@
+/**
+ * Class to define Message. Messages are composed of a "type" and a body. Some
+ * examples of message types are : COMM_FAILURE, SRV_QUEUE, MSG_LOGIN,
+ * TEST_PREPARE. Messages are defined to have a "length" field too. Currently, 2
+ * bytes of the message "body" byte array are often used to store length (For
+ * example, second/third array positions)
+ *
+ * <p>
+ * TODO for a later release: It may be worthwhile exploring whether MessageTypes
+ * could be merged here instead of being located in NDTConstants. Message/Type
+ * could also be made into an enumeration and checks for the current MessageType
+ * being assigned could be incorporated.
+ *
+ * @see MessageType for more Message Types.
+ *
+ */
+public class Message {
+
+ // TODO: Could make these private and test changes in Protocol class.
For
+ // later release
+ byte _yType;
+ byte[] _yaBody;
+
+ /**
+ * Get Message Type
+ *
+ * @return byte indicating Message Type
+ * */
+ public byte getType() {
+ return _yType;
+ }
+
+ /**
+ * Set Message Type
+ *
+ * @param bParamType
+ * byte indicating Message Type
+ * */
+ public void setType(byte bParamType) {
+ this._yType = bParamType;
+ }
+
+ /**
+ * Get Message body as array
+ *
+ * @return byte array message body
+ * */
+ public byte[] getBody() {
+ return _yaBody;
+ }
+
+ /**
+ * Set Message body, given a byte array input
+ *
+ * @param baParamBody
+ * message body byte array
+ *
+ * */
+ public void setBody(byte[] baParamBody) {
+ int iParamSize = 0;
+ if (baParamBody != null) {
+ iParamSize = baParamBody.length;
+ }
+ _yaBody = new byte[iParamSize];
+ System.arraycopy(baParamBody, 0, _yaBody, 0, iParamSize);
+ }
+
+ /**
+ * Set Message body, given a byte array and a size parameter. This
may be
+ * useful if user wants to initialize the message, and then continue
to
+ * populate it later. This method is unused currently.
+ *
+ * @param iParamSize
+ * byte array size
+ * @param baParamBody
+ * message body byte array
+ *
+ * */
+ public void setBody(byte[] baParamBody, int iParamSize) {
+ _yaBody = new byte[iParamSize];
+ System.arraycopy(baParamBody, 0, _yaBody, 0, iParamSize);
+ }
+
+ /**
+ * Utility method to initialize Message body
+ *
+ * @param iParamSize
+ * byte array size
+ *
+ * */
+ public void initBodySize(int iParamSize) {
+ this._yaBody = new byte[iParamSize];
+ }
+
+}
=======================================
--- /dev/null
+++ /trunk/Applet/MessageType.java Mon Apr 30 13:46:39 2012
@@ -0,0 +1,18 @@
+/* Class to define the NDTP control message types
+ * */
+
+public class MessageType {
+
+ public static final byte COMM_FAILURE = 0;
+ public static final byte SRV_QUEUE = 1;
+ public static final byte MSG_LOGIN = 2;
+ public static final byte TEST_PREPARE = 3;
+ public static final byte TEST_START = 4;
+ public static final byte TEST_MSG = 5;
+ public static final byte TEST_FINALIZE = 6;
+ public static final byte MSG_ERROR = 7;
+ public static final byte MSG_RESULTS = 8;
+ public static final byte MSG_LOGOUT = 9;
+ public static final byte MSG_WAITING = 10;
+
+}
=======================================
--- /dev/null
+++ /trunk/Applet/NDTConstants.java Mon Apr 30 13:46:39 2012
@@ -0,0 +1,196 @@
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import javax.swing.JOptionPane;
+
+/**
+ *
+ * Class to hold constants. These constants include both Protocol related
+ * constants and non-protocol related ones which are used by the software. The
+ * different sections of constants are listed under appropriate "sections".
+ *
+ */
+public class NDTConstants {
+
+ // Section: System variables
+ // used by the META tests
+ public static final String META_CLIENT_OS = "client.os.name";
+ public static final String META_BROWSER_OS = "client.browser.name";
+ public static final String META_CLIENT_KERNEL_VERSION = "client.kernel.version";
+ public static final String META_CLIENT_VERSION = "client.version";
+
+ /*
+ * TODO for a later release: Version could be moved to some
"configurable"
+ * or "property" area instead of being in code that needs compilation.
+ */
+ public static final String VERSION = "3.6.4";
+
+ public static final String NDT_TITLE_STR = "TCP/Web100 Network Diagnostic Tool v";
+
+ // Section: Test type
+ public static final byte TEST_MID = (1 << 0);
+ public static final byte TEST_C2S = (1 << 1);
+ public static final byte TEST_S2C = (1 << 2);
+ public static final byte TEST_SFW = (1 << 3);
+ public static final byte TEST_STATUS = (1 << 4);
+ public static final byte TEST_META = (1 << 5);
+
+ // Section: Firewall test status
+ public static final int SFW_NOTTESTED = 0;
+ public static final int SFW_NOFIREWALL = 1;
+ public static final int SFW_UNKNOWN = 2;
+ public static final int SFW_POSSIBLE = 3;
+
+ public static final double VIEW_DIFF = 0.1;
+
+ public static final String TARGET1 = "U";
+ public static final String TARGET2 = "H";
+
+ // NDT pre-fixed port ID
+ public static final int CONTROL_PORT_DEFAULT = 3001;
+
+ // Section: SRV-QUEUE message status constants
+ public static final int SRV_QUEUE_TEST_STARTS_NOW = 0;
+ public static final int SRV_QUEUE_SERVER_FAULT = 9977;
+ public static final int SRV_QUEUE_SERVER_BUSY = 9988;
+ public static final int SRV_QUEUE_HEARTBEAT = 9990;
+ public static final int SRV_QUEUE_SERVER_BUSY_60s = 9999;
+
+ // Section: Middlebox test related constants
+ public static final int MIDDLEBOX_PREDEFINED_MSS = 8192;// 8k buffer
size
+ public static final int ETHERNET_MTU_SIZE = 1456;
+
+ // Section: SFW test related constants
+ public static final String SFW_PREDEFINED_TEST_MESSAGE = "Simple firewall test";
+
+ private static ResourceBundle _rscBundleMessages;
+ public static final String TCPBW100_MSGS = "Tcpbw100_msgs";
+ public static final int PREDEFINED_BUFFER_SIZE = 8192; // 8k buffer
size
+
+ // Section: Data rate indicator integers
+ public static final int DATA_RATE_INSUFFICIENT_DATA = -2;
+ public static final int DATA_RATE_SYSTEM_FAULT = -1;
+ public static final int DATA_RATE_RTT = 0;
+ public static final int DATA_RATE_DIAL_UP = 1;
+ public static final int DATA_RATE_T1 = 2;
+ public static final int DATA_RATE_ETHERNET = 3;
+ public static final int DATA_RATE_T3 = 4;
+ public static final int DATA_RATE_FAST_ETHERNET = 5;
+ public static final int DATA_RATE_OC_12 = 6;
+ public static final int DATA_RATE_GIGABIT_ETHERNET = 7;
+ public static final int DATA_RATE_OC_48 = 8;
+ public static final int DATA_RATE_10G_ETHERNET = 9;
+ // public static final int DATA_RATE_RETRANSMISSIONS = 10;
+
+ // Section: Data rate indicator strings
+ public static final String T1_STR = "T1";
+ public static final String T3_STR = "T3";
+ public static final String ETHERNET_STR = "Ethernet";
+ public static final String FAST_ETHERNET = "FastE";
+ public static final String OC_12_STR = "OC-12";
+ public static final String GIGABIT_ETHERNET_STR = "GigE";
+ public static final String OC_48_STR = "OC-48";
+ public static final String TENGIGABIT_ETHERNET_STR = "10 Gig";
+ public static final String SYSTEM_FAULT_STR = "systemFault";
+ public static final String DIALUP_STR = "dialup2"; // unused, commenting out
+
// for now
+ public static final String RTT_STR = "rtt"; // round trip time
+
+ // Section: RFC 1323 options ( Seems like 0/1/2/3 are the options available)
+
+ public static final int RFC_1323_DISABLED = 0;
+
+ // Section: Buffer limitation test thresholds
+ public static final float BUFFER_LIMITED = 0.15f; //unused right now
+
+
+ // Section: TCP constants
+ public static final int TCP_MAX_RECV_WIN_SIZE = 65535;
+
+ // Section: Data units
+ public static final int KILO = 1000; // Used in conversions from
+
// seconds->mS,
+ public static final int KILO_BITS = 1024;// Used in kilobits->bits
+
// conversions
+ public static final int EIGHT = 8; // Used in octal number, conversions from
+
// Bytes-> bits etc
+
+ // Section: Duplex mismatch conditions
+ public static final int DUPLEX_OK_INDICATOR = 0;
+ public static final int DUPLEX_NOK_INDICATOR = 1;
+ public static final int DUPLEX_SWITCH_FULL_HOST_HALF = 2;
+ public static final int DUPLEX_SWITCH_HALF_HOST_FULL = 3;
+ public static final int DUPLEX_SWITCH_FULL_HOST_HALF_POSS = 4;
+ public static final int DUPLEX_SWITCH_HALF_HOST_FULL_POSS = 5;
+ public static final int DUPLEX_SWITCH_HALF_HOST_FULL_WARN = 7;
+
+ // Section: cable status indicators
+ public static final int CABLE_STATUS_OK = 0;
+ public static final int CABLE_STATUS_BAD = 1;
+
+ // Section: Congestion status
+ public static final int CONGESTION_NONE = 0;
+ public static final int CONGESTION_FOUND = 1;
+
+ // Section: miscellaneous
+ public static final int SOCKET_FREE_PORT_INDICATOR = 0;
+ public static final String LOOPBACK_ADDRS_STRING = "127.0.0.1";
+ public static final int PERCENTAGE = 100;
+
+ // constant to indicate protocol read success
+ public static final int PROTOCOL_MSG_READ_SUCCESS = 0;
+
+ // system variables could be declared as strings too
+ // half_duplex:, country , etc.
+
+ /**
+ * Initializes a few constants
+ *
+ * @param paramLocale
+ * local Locale object
+ * */
+ public static void initConstants(Locale paramLocale) {
+ try {
+ _rscBundleMessages =
ResourceBundle.getBundle(TCPBW100_MSGS,
+ paramLocale);
+ System.out.println("Obtained messages ");
+ } catch (Exception e) {
+ JOptionPane.showMessageDialog(null,
+ "Error while loading language
files:\n" + e.getMessage());
+ e.printStackTrace();
+ }
+
+ } // end method
+
+ /**
+ * Initializes a few constants
+ *
+ * @param paramStrLang
+ * local Language String
+ * @param paramStrCountry
+ * local country String
+ * */
+ public static void initConstants(String paramStrLang, String paramStrCountry) {
+ try {
+ Locale locale = new Locale(paramStrLang,
paramStrCountry);
+ _rscBundleMessages =
ResourceBundle.getBundle("Tcpbw100_msgs",
+ locale);
+ } catch (Exception e) {
+ JOptionPane.showMessageDialog(null,
+ "Error while loading language
files:\n" + e.getMessage());
+ e.printStackTrace();
+ }
+ }// end method initconstants
+
+ /**
+ * Getter method for to fetch from resourceBundle
+ *
+ * @param paramStrName
+ * name of parameter to be fetched
+ * @return Value of parameter input
+ */
+ public static String getMessageString(String paramStrName) {
+ return _rscBundleMessages.getString(paramStrName);
+ }
+
+}
=======================================
--- /dev/null
+++ /trunk/Applet/NDTUtils.java Mon Apr 30 13:46:39 2012
@@ -0,0 +1,85 @@
+import java.util.ResourceBundle;
+
+/**
+ * Class that defines utility methods used by the NDT code
+ */
+ public class NDTUtils {
+
+ /**
+ * Utility method to print double value up to the hundredth place.
+ *
+ * @param paramDblToFormat
+ * Double numbers to format
+ * @return String value of double number
+ */
+ public static String prtdbl(double paramDblToFormat) {
+ String str = null;
+ int i;
+
+ if (paramDblToFormat == 0) {
+ return ("0");
+ }
+ str = Double.toString(paramDblToFormat);
+ i = str.indexOf(".");
+ i = i + 3;
+ if (i > str.length()) {
+ i = i - 1;
+ }
+ if (i > str.length()) {
+ i = i - 1;
+ }
+ return (str.substring(0, i));
+ } // prtdbl() method ends
+
+
+ /**
+ * Utility method to print Text values for data speed related keys.
+ *
+ * @param paramIntVal
+ * integer parameter for which we find text value
+ * @return String Textual name for input parameter
+ */
+ public static String prttxt(int paramIntVal, ResourceBundle paramResBundObj) {
+ String strNameTxt = null;
+
+ switch (paramIntVal) {
+ case (NDTConstants.DATA_RATE_SYSTEM_FAULT):
+ strNameTxt = paramResBundObj
+
.getString(NDTConstants.SYSTEM_FAULT_STR);
+ break;
+ case NDTConstants.DATA_RATE_RTT:
+ strNameTxt =
paramResBundObj.getString(NDTConstants.RTT_STR);
+ break;
+ case NDTConstants.DATA_RATE_DIAL_UP:
+ strNameTxt =
paramResBundObj.getString(NDTConstants.DIALUP_STR);
+ break;
+ case NDTConstants.DATA_RATE_T1:
+ strNameTxt = NDTConstants.T1_STR;
+ break;
+ case NDTConstants.DATA_RATE_ETHERNET:
+ strNameTxt = NDTConstants.ETHERNET_STR;
+ break;
+ case NDTConstants.DATA_RATE_T3:
+ strNameTxt = NDTConstants.T3_STR;
+ break;
+ case NDTConstants.DATA_RATE_FAST_ETHERNET:
+ strNameTxt = NDTConstants.FAST_ETHERNET;
+ break;
+ case NDTConstants.DATA_RATE_OC_12:
+ strNameTxt = NDTConstants.OC_12_STR;
+ break;
+ case NDTConstants.DATA_RATE_GIGABIT_ETHERNET:
+ strNameTxt = NDTConstants.GIGABIT_ETHERNET_STR;
+ break;
+ case NDTConstants.DATA_RATE_OC_48:
+ strNameTxt = NDTConstants.OC_48_STR;
+ break;
+ case NDTConstants.DATA_RATE_10G_ETHERNET:
+ strNameTxt = NDTConstants.TENGIGABIT_ETHERNET_STR;
+ break;
+ } // end switch
+ return (strNameTxt);
+ } // prttxt() method ends
+
+
+}
=======================================
--- /dev/null
+++ /trunk/Applet/NewFrame.java Mon Apr 30 13:46:39 2012
@@ -0,0 +1,35 @@
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.JFrame;
+
+/**
+ * Utility class that creates a new "Frame" with a window closing functionality.
+ * This Class is used to provide a base "frame" for the Statistics, Details and
+ * Options windows
+ *
+ * This class is declared separately so that it can be easily extended by users
+ * to customize based on individual needs
+ *
+ */
+public class NewFrame extends JFrame {
+ /**
+ * Auto-generated compiler constant that does not contribute to
classes'
+ * functionality
+ */
+ private static final long serialVersionUID = 8990839319520684317L;
+
+ /**
+ * Constructor
+ **/
+ public NewFrame() {
+ addWindowListener(new WindowAdapter() {
+ public void windowClosing(WindowEvent event) {
+ // System.err.println("Handling window closing
event");
+ dispose();
+ }
+ });
+ // System.err.println("Extended Frame class - RAC9/15/03");
+ }
+
+} // class: NewFrame
=======================================
--- /dev/null
+++ /trunk/Applet/OsfwWorker.java Mon Apr 30 13:46:39 2012
@@ -0,0 +1,173 @@
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+/**
+ * OsfwWorker creates a thread that listens for a message from the server. It
+ * functions to check if the server has sent a message that is valid and
+ * sufficient to determine if the server->client direction has a fire-wall.
+ *
+ * <p>
+ * As part of the simple firewall test, the Server must try to connect to the
+ * Client's ephemeral port and send a TEST_MSG message containing a pre-defined
+ * string "Simple firewall test" of 20 chars using this newly created
+ * connection. This class implements this functionality.
+ *
+ * The result of the test is set back into the Tcpbw100._iS2cSFWResult variable
+ * (using setter methods) for the test results to be interpreted later
+ * */
+
+public class OsfwWorker implements Runnable {
+
+ private ServerSocket _srvSocket;
+ private int _iTestTime;
+ private boolean _iFinalized = false;
+ // local Tcpbw100 Applet reference
+ Tcpbw100 _localTcpAppObj;
+
+ /**
+ * Constructor
+ *
+ * @param Socket
+ * srvSocketParam Socket used to transmit protocol messages
+ *
+ * @param iParamTestTime
+ * Test time duration to wait for message from server
+ */
+ OsfwWorker(ServerSocket srvSocketParam, int iParamTestTime) {
+ this._srvSocket = srvSocketParam;
+ this._iTestTime = iParamTestTime;
+ }
+
+ /**
+ * Constructor accepting Tcpbw100 parameter
+ *
+ * @param ServerSocket
+ * Socket on which to accept connections
+ * @param iParamTestTime
+ * Test time duration to wait for message from server
+ * @param _localParam
+ * Applet object used to set the result of the S->C firewall test
+ */
+ OsfwWorker(ServerSocket srvSocketParam, int iParamTestTime,
+ Tcpbw100 _localParam) {
+ this._srvSocket = srvSocketParam;
+ this._iTestTime = iParamTestTime;
+ this._localTcpAppObj = _localParam;
+ }
+
+ /**
+ * Make current thread sleep for 1000 ms
+ *
+ * */
+ public void finalize() {
+ // If test is not already complete/terminated, then sleep
+ while (!_iFinalized) {
+ try {
+ Thread.currentThread().sleep(1000);
+ } catch (InterruptedException e) {
+ // do nothing.
+ }
+ }
+ }
+
+ /**
+ * run() method of this SFW Worker thread. This thread listens on the socket
+ * from the server for a given time period, and checks to see if the server
+ * has sent a message that is valid and sufficient to determine if the S->C
+ * direction has a fire-wall.
+ * */
+ public void run() {
+
+ Message msg = new Message();
+ Socket socketObj = null;
+
+ try {
+ // set timeout to given value in ms
+ _srvSocket.setSoTimeout(_iTestTime * 1000);
+ try {
+
+ // Blocking call trying to create connection
to socket and
+ // accept it
+ socketObj = _srvSocket.accept();
+ } catch (Exception e) {
+ e.printStackTrace();
+
+ // The "accept" call has failed, and
indicates a firewall
+ // possibility
+ this._localTcpAppObj
+
.setS2cSFWTestResults(NDTConstants.SFW_POSSIBLE);
+ _srvSocket.close();
+ _iFinalized = true;
+ return;
+ }
+ Protocol sfwCtl = new Protocol(socketObj);
+
+ // commented out sections indicate move to outer class
+ if (sfwCtl.recv_msg(msg) != 0) {
+
+ // error, msg read/received incorrectly.
Hence set status as
+ // unknown
+ System.out
+ .println("Simple firewall test:
unrecognized message");
+ this._localTcpAppObj
+
.setS2cSFWTestResults(NDTConstants.SFW_UNKNOWN);
+ // close socket objects and wrap up
+ socketObj.close();
+ _srvSocket.close();
+ _iFinalized = true;
+ return;
+ }
+
+ // The server sends a TEST_MSG type packet. Any other
message-type
+ // is not expected at this point, and hence an error
+ if (msg.getType() != MessageType.TEST_MSG) {
+ this._localTcpAppObj
+
.setS2cSFWTestResults(NDTConstants.SFW_UNKNOWN);
+ // close socket objects and wrap up
+ socketObj.close();
+ _srvSocket.close();
+ _iFinalized = true;
+ return;
+ }
+
+
+ // The server is expected to send a 20 char message
that
+ // says "Simple firewall test" . Every other message
string
+ // indicates an unknown firewall status
+
+ if (!new String(msg.getBody())
+
.equals(NDTConstants.SFW_PREDEFINED_TEST_MESSAGE)) {
+ System.out.println("Simple firewall test: Improper
message");
+ this._localTcpAppObj
+
.setS2cSFWTestResults(NDTConstants.SFW_UNKNOWN);
+ // close socket objects and wrap up
+ socketObj.close();
+ _srvSocket.close();
+ _iFinalized = true;
+ return;
+ }
+
+ // If none of the above conditions were met, then,
the server
+ // message has been received correctly, and there
seems to be no
+ // firewall
+ this._localTcpAppObj
+
.setS2cSFWTestResults(NDTConstants.SFW_NOFIREWALL);
+
+ } catch (IOException ex) {
+ // Status of firewall could not be determined before
concluding
+
this._localTcpAppObj.setS2cSFWTestResults(NDTConstants.SFW_UNKNOWN);
+ }
+
+ // finalize and close connections
+ try {
+ socketObj.close();
+ _srvSocket.close();
+ } catch (IOException e) {
+ System.err.println("OsfwWorker: Exception trying to close
sockets"
+ + e);
+ // log exception occurence
+ }
+ _iFinalized = true;
+ }
+}
=======================================
--- /dev/null
+++ /trunk/Applet/Protocol.java Mon Apr 30 13:46:39 2012
@@ -0,0 +1,151 @@
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.Socket;
+
+/**
+ * Class aggregating operations that can be performed for
+ * sending/receiving/reading Protocol messages
+ *
+ * */
+
+public class Protocol {
+ private InputStream _ctlInStream;
+ private OutputStream _ctlOutStream;
+
+ /**
+ * Constructor that accepts socket over which to communicate as
parameter
+ *
+ * @param ctlSocketParam
+ * socket used to send the protocol messages over
+ * @throws IOException
+ * if Input/Output streams cannot be read from/written
into
+ * correctly
+ */
+ public Protocol(Socket ctlSocketParam) throws IOException {
+ _ctlInStream = ctlSocketParam.getInputStream();
+ _ctlOutStream = ctlSocketParam.getOutputStream();
+ }
+
+ /**
+ * Send message given its Type and data byte
+ *
+ * @param bParamType
+ * Control Message Type
+ * @param bParamToSend
+ * Data value to send
+ * @throws IOException
+ * If data cannot be successfully written to the Output
Stream
+ *
+ * */
+ public void send_msg(byte bParamType, byte bParamToSend) throws IOException {
+ byte[] tab = new byte[] { bParamToSend };
+ send_msg(bParamType, tab);
+ }
+
+ /**
+ * Send protocol messages given their type and data byte array
+ *
+ * @param bParamType
+ * Control Message Type
+ * @param bParamToSend
+ * Data value array to send
+ * @throws IOException
+ * If data cannot be successfully written to the Output
Stream
+ *
+ * */
+ public void send_msg(byte bParamType, byte[] bParamToSend)
+ throws IOException {
+ byte[] header = new byte[3];
+ header[0] = bParamType;
+
+ // 2 bytes are used to hold data length. Thus, max(data
length) = 65535
+ header[1] = (byte) (bParamToSend.length >> 8);
+ header[2] = (byte) bParamToSend.length;
+
+ // Write data to outputStream
+ _ctlOutStream.write(header);
+ _ctlOutStream.write(bParamToSend);
+ }
+
+ /**
+ * Populate Message byte array with specific number of bytes of data
from
+ * socket input stream
+ *
+ * @param msgParam
+ * Message object to be populated
+ * @param iParamAmount
+ * specified number of bytes to be read
+ * @return integer number of bytes populated
+ * @throws IOException
+ * If data cannot be successfully read from the Input
Stream
+ */
+ public int readn(Message msgParam, int iParamAmount) throws
IOException {
+ int read = 0;
+ int tmp;
+ msgParam.initBodySize(iParamAmount);
+ while (read != iParamAmount) {
+ tmp = _ctlInStream
+ .read(msgParam._yaBody, read,
iParamAmount - read);
+ if (tmp <= 0) {
+ return read;
+ }
+ read += tmp;
+ }
+ return read;
+ }
+
+ /**
+ * Receive message at end-point of socket
+ *
+ * @param msgParam
+ * Message object
+ * @return integer with values:
+ * <p>
+ * a) Success:
+ * <ul>
+ * <li>
+ * value=0 : successfully read expected number of bytes.</li>
+ * </ul>
+ * <p>
+ * b) Error:
+ * <ul>
+ * <li>value= 1 : Error reading ctrl-message length and data
type
+ * itself, since NDTP-control packet has to be at the least 3 octets
+ * long</li>
+ * <li>value= 3 : Error, mismatch between "length" field of
+ * ctrl-message and actual data read</li>
+ * </ul>
+ * */
+ public int recv_msg(Message msgParam) throws IOException {
+ int length;
+ if (readn(msgParam, 3) != 3) {
+ return 1;
+ }
+
+ byte[] yaMsgBody = msgParam.getBody();
+ msgParam.setType(yaMsgBody[0]);
+
+ // Get data length
+ length = ((int) yaMsgBody[1] & 0xFF) << 8;
+ length += (int) yaMsgBody[2] & 0xFF;
+
+ if (readn(msgParam, length) != length) {
+ return 3;
+ }
+ return 0;
+ }
+
+ /**
+ * Method to close open Streams
+ */
+ public void close() {
+ try {
+ _ctlInStream.close();
+ _ctlOutStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+} // end class Protocol
=======================================
--- /dev/null
+++ /trunk/Applet/ResultsTextPane.java Mon Apr 30 13:46:39 2012
@@ -0,0 +1,53 @@
+import java.awt.Component;
+
+import javax.swing.JTextPane;
+import javax.swing.text.BadLocationException;
+
+/*
+ * Class that extends TextPane. This Text-pane is used as the chief
+ * Results window that summarizes the results of all tests
+ * that have been run.
+ *
+ * This class is declared separately so that it can be easily extended
+ * by users to customize based on individual needs
+ *
+ */
+public class ResultsTextPane extends JTextPane {
+
+ /**
+ * Compiler auto-generate value not directly related to class functionality
+ */
+ private static final long serialVersionUID = -2224271202004876654L;
+
+ /**
+ * Method to append String into the current document
+ *
+ * @param paramTextStr
+ * String to be inserted into the document
+ **/
+ public void append(String paramTextStr) {
+ try {
+
getStyledDocument().insertString(getStyledDocument().getLength(),
+ paramTextStr, null);
+ } catch (BadLocationException e) {
+ System.out
+ .println("WARNING: failed to append text
to the text pane! ["
+ + paramTextStr + "]");
+ }
+ }
+
+ /**
+ * JTextPane method to insert a component into the document as a replacement
+ * for currently selected content. If no selection is made, the the
+ * component is inserted at the current position of the caret.
+ *
+ * @param paramCompObj
+ * the component to insert
+ * */
+ public void insertComponent(Component paramCompObj) {
+ setSelectionStart(this.getStyledDocument().getLength());
+ setSelectionEnd(this.getStyledDocument().getLength());
+ super.insertComponent(paramCompObj);
+ }
+
+}
=======================================
--- /dev/null
+++ /trunk/Applet/StatusPanel.java Mon Apr 30 13:46:39 2012
@@ -0,0 +1,121 @@
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+
+/**
+ * Class that displays status of tests being run. It also provides methods to
+ * set status message, record intention to stop tests, and to fetch the status
+ * of whether the test is to be stopped.
+ * */
+
+public class StatusPanel extends JPanel {
+ /**
+ * Compiler generated constant that is not related to current classes'
+ * specific functionality
+ */
+ private static final long serialVersionUID = 2609233901130079136L;
+
+ private int _iTestsCompleted; // variable used to record the count of
+ //
"finished" tests
+ private int _iTestsNum; // total test count
+ private boolean _bStop = false;
+
+ private JLabel _labelTestNum = new JLabel();
+ private JButton _buttonStop;
+ private JProgressBar _progressBarObj = new JProgressBar();
+
+ /*
+ * Constructor
+ *
+ * @param testsNum Total number of tests scheduled to be run
+ *
+ * @param sParamaEnableMultiple String indicating whether multiple
tests
+ * have been scheduled
+ */
+ public StatusPanel(int iParamTestsNum, String sParamEnableMultiple) {
+ this._iTestsCompleted = 1;
+ this._iTestsNum = iParamTestsNum;
+
+ setTestNoLabelText();
+
+ // If multiple tests are enabled to be run, then add
information about
+ // the test number being run
+ if (sParamEnableMultiple != null) {
+ add(_labelTestNum);
+ }
+
+ _progressBarObj.setMinimum(0);
+ _progressBarObj.setMaximum(_iTestsNum);
+ _progressBarObj.setValue(0);
+ _progressBarObj.setStringPainted(true);
+ if (_iTestsNum == 0) {
+ _progressBarObj.setString("");
+ _progressBarObj.setIndeterminate(true);
+ } else {
+ _progressBarObj.setString(NDTConstants
+ .getMessageString("initialization"));
+ }
+ add(_progressBarObj);
+ _buttonStop = new
JButton(NDTConstants.getMessageString("stop"));
+ _buttonStop.addActionListener(new ActionListener() {
+
+ public void actionPerformed(ActionEvent e) {
+ _bStop = true;
+ _buttonStop.setEnabled(false);
+ StatusPanel.this.setText(NDTConstants
+
.getMessageString("stopping"));
+ }
+
+ });
+
+ // If multiple tests are enabled to be run, provide user
option to
+ // stop the one currently running
+ if (sParamEnableMultiple != null) {
+ add(_buttonStop);
+ }
+ }
+
+ /**
+ * Set Test number being run
+ * */
+ private void setTestNoLabelText() {
+ _labelTestNum.setText(NDTConstants.getMessageString("test") + "
"
+ + _iTestsCompleted + " " +
NDTConstants.getMessageString("of")
+ + " " + _iTestsNum);
+
+ }
+
+ /**
+ * Get intention to stop tests
+ *
+ * @return boolean indicating intention to stop or not
+ * */
+ public boolean wantToStop() {
+ return _bStop;
+ }
+
+ /**
+ * End the currently running test
+ * */
+ public void endTest() {
+ _progressBarObj.setValue(_iTestsCompleted);
+ _iTestsCompleted++;
+ setTestNoLabelText();
+ }
+
+ /**
+ * Sets a string explaining progress of tests
+ *
+ * @param sParamText
+ * String status of test-run
+ * */
+ public void setText(String sParamText) {
+ if (!_progressBarObj.isIndeterminate()) {
+ _progressBarObj.setString(sParamText);
+ }
+ }
+} // end class StatusPanel
=======================================
--- /dev/null
+++ /trunk/Applet/UserAgentTools.java Mon Apr 30 13:46:39 2012
@@ -0,0 +1,449 @@
+/* This class has code taken from
+ * http://nerds.palmdrive.net/useragent/code.html
+ *
+ * Class used to obtain information about who is accessing a web-server.
+ *
+ * When a web browser accesses a web-server, it usually transmits a "User-Agent" string.
+ * This is expected to include the name and versions of the browser and
+ * the underlying Operating System. Though the information inside a user-agent string is not restricted to
+ * these alone, currently, NDT uses this to get Browser OS only.
+ *
+ */
+
+public class UserAgentTools {
+
+ public static String getFirstVersionNumber(String a_userAgent,
+ int a_position, int numDigits) {
+ String ver = getVersionNumber(a_userAgent, a_position);
+ if (ver == null)
+ return "";
+ int i = 0;
+ String res = "";
+ while (i < ver.length() && i < numDigits) {
+ res += String.valueOf(ver.charAt(i));
+ i++;
+ }
+ return res;
+ }
+
+ public static String getVersionNumber(String a_userAgent, int a_position) {
+ if (a_position < 0)
+ return "";
+ StringBuffer res = new StringBuffer();
+ int status = 0;
+
+ while (a_position < a_userAgent.length()) {
+ char c = a_userAgent.charAt(a_position);
+ switch (status) {
+ case 0: // <SPAN class="codecomment"> No valid digits
encountered
+ // yet</span>
+ if (c == ' ' || c == '/')
+ break;
+ if (c == ';' || c == ')')
+ return "";
+ status = 1;
+ case 1: // <SPAN class="codecomment"> Version number
in
+ // progress</span>
+ if (c == ';' || c == '/' || c == ')' || c ==
'(' || c == '[')
+ return res.toString().trim();
+ if (c == ' ')
+ status = 2;
+ res.append(c);
+ break;
+ case 2: // <SPAN class="codecomment"> Space
encountered - Might need
+ // to end the parsing</span>
+ if ((Character.isLetter(c) &&
Character.isLowerCase(c))
+ || Character.isDigit(c)) {
+ res.append(c);
+ status = 1;
+ } else
+ return res.toString().trim();
+ break;
+ }
+ a_position++;
+ }
+ return res.toString().trim();
+ }
+
+ public static String[] getArray(String a, String b, String c) {
+ String[] res = new String[3];
+ res[0] = a;
+ res[1] = b;
+ res[2] = c;
+ return res;
+ }
+
+ public static String[] getBotName(String userAgent) {
+ userAgent = userAgent.toLowerCase();
+ int pos = 0;
+ String res = null;
+ if ((pos = userAgent.indexOf("help.yahoo.com/")) > -1) {
+ res = "Yahoo";
+ pos += 7;
+ } else if ((pos = userAgent.indexOf("google/")) > -1) {
+ res = "Google";
+ pos += 7;
+ } else if ((pos = userAgent.indexOf("msnbot/")) > -1) {
+ res = "MSNBot";
+ pos += 7;
+ } else if ((pos = userAgent.indexOf("googlebot/")) > -1) {
+ res = "Google";
+ pos += 10;
+ } else if ((pos = userAgent.indexOf("webcrawler/")) > -1) {
+ res = "WebCrawler";
+ pos += 11;
+ } else if ((pos = userAgent.indexOf("inktomi")) > -1) {
+ // <SPAN class="codecomment"> The following two bots
don't have any
+ // version number in their User-Agent strings.</span>
+ res = "Inktomi";
+ pos = -1;
+ } else if ((pos = userAgent.indexOf("teoma")) > -1) {
+ res = "Teoma";
+ pos = -1;
+ }
+ if (res == null)
+ return null;
+ return getArray(res, res, res + getVersionNumber(userAgent,
pos));
+ }
+
+ public static String[] getOS(String userAgent) {
+ if (getBotName(userAgent) != null)
+ return getArray("Bot", "Bot", "Bot");
+ String[] res = null;
+ int pos;
+ if ((pos = userAgent.indexOf("Windows-NT")) > -1) {
+ res = getArray("Win", "WinNT",
+ "Win" + getVersionNumber(userAgent,
pos + 8));
+ } else if (userAgent.indexOf("Windows NT") > -1) {
+ // <SPAN class="codecomment"> The different versions
of Windows NT
+ // are decoded in the verbosity level 2</span>
+ // <SPAN class="codecomment"> ie: Windows NT 5.1 = Windows
XP</span>
+ if ((pos = userAgent.indexOf("Windows NT 5.1")) > -1)
{
+ res = getArray("Win", "WinXP",
+ "Win" +
getVersionNumber(userAgent, pos + 7));
+ } else if ((pos = userAgent.indexOf("Windows NT 6.0"))
> -1) {
+ res = getArray("Win", "Vista",
+ "Vista" +
getVersionNumber(userAgent, pos + 7));
+ } else if ((pos = userAgent.indexOf("Windows NT 6.1"))
> -1) {
+ res = getArray("Win", "Seven",
+ "Seven " +
getVersionNumber(userAgent, pos + 7));
+ } else if ((pos = userAgent.indexOf("Windows NT 5.0"))
> -1) {
+ res = getArray("Win", "Win2000",
+ "Win" +
getVersionNumber(userAgent, pos + 7));
+ } else if ((pos = userAgent.indexOf("Windows NT 5.2"))
> -1) {
+ res = getArray("Win", "Win2003",
+ "Win" +
getVersionNumber(userAgent, pos + 7));
+ } else if ((pos = userAgent.indexOf("Windows NT 4.0"))
> -1) {
+ res = getArray("Win", "WinNT4",
+ "Win" +
getVersionNumber(userAgent, pos + 7));
+ } else if ((pos = userAgent.indexOf("Windows NT)")) >
-1) {
+ res = getArray("Win", "WinNT", "WinNT");
+ } else if ((pos = userAgent.indexOf("Windows NT;")) >
-1) {
+ res = getArray("Win", "WinNT", "WinNT");
+ } else {
+ res = getArray("Win", "WinNT?", "WinNT?");
+ }
+ } else if (userAgent.indexOf("Win") > -1) {
+ if (userAgent.indexOf("Windows") > -1) {
+ if ((pos = userAgent.indexOf("Windows 98")) >
-1) {
+ res = getArray("Win", "Win98",
+ "Win" +
getVersionNumber(userAgent, pos + 7));
+ } else if ((pos =
userAgent.indexOf("Windows_98")) > -1) {
+ res = getArray("Win", "Win98",
+ "Win" +
getVersionNumber(userAgent, pos + 8));
+ } else if ((pos = userAgent.indexOf("Windows
2000")) > -1) {
+ res = getArray("Win", "Win2000",
+ "Win" +
getVersionNumber(userAgent, pos + 7));
+ } else if ((pos = userAgent.indexOf("Windows
95")) > -1) {
+ res = getArray("Win", "Win95",
+ "Win" +
getVersionNumber(userAgent, pos + 7));
+ } else if ((pos = userAgent.indexOf("Windows
9x")) > -1) {
+ res = getArray("Win", "Win9x",
+ "Win" +
getVersionNumber(userAgent, pos + 7));
+ } else if ((pos = userAgent.indexOf("Windows
ME")) > -1) {
+ res = getArray("Win", "WinME",
+ "Win" +
getVersionNumber(userAgent, pos + 7));
+ } else if ((pos = userAgent.indexOf("Windows
CE;")) > -1) {
+ res = getArray("Win", "WinCE",
"WinCE");
+ } else if ((pos = userAgent.indexOf("Windows
3.1")) > -1) {
+ res = getArray("Win", "Win31",
+ "Win" +
getVersionNumber(userAgent, pos + 7));
+ }
+ // <SPAN class="codecomment"> If no version
was found, rely on
+ // the following code to detect "WinXX"</span>
+ // <SPAN class="codecomment"> As some
User-Agents include two
+ // references to Windows</span>
+ // <SPAN class="codecomment"> Ex: Mozilla/5.0
(Windows; U;
+ // Win98; en-US; rv:1.5)</span>
+ }
+ if (res == null) {
+ if ((pos = userAgent.indexOf("Win98")) > -1) {
+ res = getArray("Win", "Win98",
+ "Win" +
getVersionNumber(userAgent, pos + 3));
+ } else if ((pos = userAgent.indexOf("Win31"))
> -1) {
+ res = getArray("Win", "Win31",
+ "Win" +
getVersionNumber(userAgent, pos + 3));
+ } else if ((pos = userAgent.indexOf("Win95"))
> -1) {
+ res = getArray("Win", "Win95",
+ "Win" +
getVersionNumber(userAgent, pos + 3));
+ } else if ((pos = userAgent.indexOf("Win 9x"))
> -1) {
+ res = getArray("Win", "Win9x",
+ "Win" +
getVersionNumber(userAgent, pos + 3));
+ } else if ((pos = userAgent.indexOf("WinNT4.0"))
> -1) {
+ res = getArray("Win", "WinNT4",
+ "Win" +
getVersionNumber(userAgent, pos + 3));
+ } else if ((pos = userAgent.indexOf("WinNT"))
> -1) {
+ res = getArray("Win", "WinNT",
+ "Win" +
getVersionNumber(userAgent, pos + 3));
+ }
+ }
+ if (res == null) {
+ if ((pos = userAgent.indexOf("Windows")) >
-1) {
+ res = getArray("Win", "Win?",
+ "Win?" +
getVersionNumber(userAgent, pos + 7));
+ } else if ((pos = userAgent.indexOf("Win")) >
-1) {
+ res = getArray("Win", "Win?",
+ "Win?" +
getVersionNumber(userAgent, pos + 3));
+ } else
+ // <SPAN class="codecomment"> Should
not happen at this
+ // point</span>
+ res = getArray("Win", "Win?", "Win?");
+ }
+ } else if ((pos = userAgent.indexOf("Mac OS X")) > -1) {
+ if ((userAgent.indexOf("iPhone")) > -1) {
+ pos = userAgent.indexOf("iPhone OS");
+ if ((userAgent.indexOf("iPod")) > -1) {
+ res = getArray(
+ "iOS",
+ "iOS-iPod",
+ "iOS-iPod "
+ + ((pos < 0) ?
"" : getVersionNumber(
+
userAgent, pos + 9)));
+ } else {
+ res = getArray(
+ "iOS",
+ "iOS-iPhone",
+ "iOS-iPhone "
+ + ((pos < 0) ?
"" : getVersionNumber(
+
userAgent, pos + 9)));
+ }
+ } else if ((userAgent.indexOf("iPad")) > -1) {
+ pos = userAgent.indexOf("CPU OS");
+ res = getArray("iOS", "iOS-iPad", "iOS-iPad "
+ + ((pos < 0) ? ""
+ :
getVersionNumber(userAgent, pos + 6)));
+ } else
+ res = getArray("Mac", "MacOSX",
+ "MacOS " +
getVersionNumber(userAgent, pos + 8));
+ } else if ((pos = userAgent.indexOf("Android")) > -1) {
+ res = getArray("Linux", "Android",
+ "Android " +
getVersionNumber(userAgent, pos + 8));
+ } else if ((pos = userAgent.indexOf("Mac_PowerPC")) > -1) {
+ res = getArray("Mac", "MacPPC",
+ "MacOS " +
getVersionNumber(userAgent, pos + 3));
+ } else if ((pos = userAgent.indexOf("Macintosh")) > -1) {
+ if (userAgent.indexOf("PPC") > -1)
+ res = getArray("Mac", "MacPPC", "Mac PPC");
+ else
+ res = getArray("Mac?", "Mac?", "MacOS?");
+ } else if ((pos = userAgent.indexOf("FreeBSD")) > -1) {
+ res = getArray("*BSD", "*BSD FreeBSD", "FreeBSD "
+ + getVersionNumber(userAgent, pos +
7));
+ } else if ((pos = userAgent.indexOf("OpenBSD")) > -1) {
+ res = getArray("*BSD", "*BSD OpenBSD", "OpenBSD "
+ + getVersionNumber(userAgent, pos +
7));
+ } else if ((pos = userAgent.indexOf("Linux")) > -1) {
+ String detail = "Linux " +
getVersionNumber(userAgent, pos + 5);
+ String med = "Linux";
+ if ((pos = userAgent.indexOf("Ubuntu/")) > -1) {
+ detail = "Ubuntu " +
getVersionNumber(userAgent, pos + 7);
+ med += " Ubuntu";
+ }
+ res = getArray("Linux", med, detail);
+ } else if ((pos = userAgent.indexOf("CentOS")) > -1) {
+ res = getArray("Linux", "Linux CentOS", "CentOS");
+ } else if ((pos = userAgent.indexOf("NetBSD")) > -1) {
+ res = getArray("*BSD", "*BSD NetBSD",
+ "NetBSD " +
getVersionNumber(userAgent, pos + 6));
+ } else if ((pos = userAgent.indexOf("Unix")) > -1) {
+ res = getArray("Linux", "Linux",
+ "Linux " +
getVersionNumber(userAgent, pos + 4));
+ } else if ((pos = userAgent.indexOf("SunOS")) > -1) {
+ res = getArray("Unix", "SunOS",
+ "SunOS" + getVersionNumber(userAgent,
pos + 5));
+ } else if ((pos = userAgent.indexOf("IRIX")) > -1) {
+ res = getArray("Unix", "IRIX",
+ "IRIX" + getVersionNumber(userAgent,
pos + 4));
+ } else if ((pos = userAgent.indexOf("SonyEricsson")) > -1) {
+ res = getArray("SonyEricsson", "SonyEricsson",
"SonyEricsson"
+ + getVersionNumber(userAgent, pos +
12));
+ } else if ((pos = userAgent.indexOf("Nokia")) > -1) {
+ res = getArray("Nokia", "Nokia",
+ "Nokia" + getVersionNumber(userAgent,
pos + 5));
+ } else if ((pos = userAgent.indexOf("BlackBerry")) > -1) {
+ res = getArray("BlackBerry", "BlackBerry",
"BlackBerry"
+ + getVersionNumber(userAgent, pos +
10));
+ } else if ((pos = userAgent.indexOf("SymbianOS")) > -1) {
+ res = getArray("SymbianOS", "SymbianOS", "SymbianOS"
+ + getVersionNumber(userAgent, pos +
10));
+ } else if ((pos = userAgent.indexOf("BeOS")) > -1) {
+ res = getArray("BeOS", "BeOS", "BeOS");
+ } else if ((pos = userAgent.indexOf("Nintendo Wii")) > -1) {
+ res = getArray("Nintendo Wii", "Nintendo Wii", "Nintendo
Wii"
+ + getVersionNumber(userAgent, pos +
10));
+ } else if ((pos = userAgent.indexOf("J2ME/MIDP")) > -1) {
+ res = getArray("Java", "J2ME", "J2ME/MIDP");
+ } else
+ res = getArray("?", "?", "?");
+ return res;
+ }
+
+ public static String[] getBrowser(String userAgent) {
+ if (userAgent == null) {
+ return getArray("?", "?", "?");
+ }
+ String[] botName;
+ if ((botName = getBotName(userAgent)) != null)
+ return botName;
+ String[] res = null;
+ int pos;
+ if ((pos = userAgent.indexOf("Lotus-Notes/")) > -1) {
+ res = getArray("LotusNotes", "LotusNotes",
"LotusNotes"
+ + getVersionNumber(userAgent, pos +
12));
+ } else if ((pos = userAgent.indexOf("Opera")) > -1) {
+ String ver = getVersionNumber(userAgent, pos + 5);
+ res = getArray("Opera",
+ "Opera" +
getFirstVersionNumber(userAgent, pos + 5, 1),
+ "Opera" + ver);
+ if ((pos = userAgent.indexOf("Opera Mini/")) > -1) {
+ String ver2 = getVersionNumber(userAgent, pos
+ 11);
+ res = getArray("Opera", "Opera Mini", "Opera Mini
" + ver2);
+ } else if ((pos = userAgent.indexOf("Opera Mobi/")) >
-1) {
+ String ver2 = getVersionNumber(userAgent, pos
+ 11);
+ res = getArray("Opera", "Opera Mobi", "Opera Mobi
" + ver2);
+ }
+ } else if (userAgent.indexOf("MSIE") > -1) {
+ if ((pos = userAgent.indexOf("MSIE 6.0")) > -1) {
+ res = getArray("MSIE", "MSIE6",
+ "MSIE" +
getVersionNumber(userAgent, pos + 4));
+ } else if ((pos = userAgent.indexOf("MSIE 5.0")) >
-1) {
+ res = getArray("MSIE", "MSIE5",
+ "MSIE" +
getVersionNumber(userAgent, pos + 4));
+ } else if ((pos = userAgent.indexOf("MSIE 5.5")) >
-1) {
+ res = getArray("MSIE", "MSIE5.5",
+ "MSIE" +
getVersionNumber(userAgent, pos + 4));
+ } else if ((pos = userAgent.indexOf("MSIE 5.")) > -1)
{
+ res = getArray("MSIE", "MSIE5.x",
+ "MSIE" +
getVersionNumber(userAgent, pos + 4));
+ } else if ((pos = userAgent.indexOf("MSIE 4")) > -1) {
+ res = getArray("MSIE", "MSIE4",
+ "MSIE" +
getVersionNumber(userAgent, pos + 4));
+ } else if ((pos = userAgent.indexOf("MSIE 7")) > -1
+ && userAgent.indexOf("Trident/4.0") <
0) {
+ res = getArray("MSIE", "MSIE7",
+ "MSIE" +
getVersionNumber(userAgent, pos + 4));
+ } else if ((pos = userAgent.indexOf("MSIE 8")) > -1
+ || userAgent.indexOf("Trident/4.0") >
-1) {
+ res = getArray("MSIE", "MSIE8",
+ "MSIE" +
getVersionNumber(userAgent, pos + 4));
+ } else if ((pos = userAgent.indexOf("MSIE 9")) > -1
+ || userAgent.indexOf("Trident/4.0") >
-1) {
+ res = getArray("MSIE", "MSIE9",
+ "MSIE" +
getVersionNumber(userAgent, pos + 4));
+ } else
+ res = getArray(
+ "MSIE",
+ "MSIE?",
+ "MSIE?"
+ +
getVersionNumber(userAgent,
+
userAgent.indexOf("MSIE") + 4));
+ } else if ((pos = userAgent.indexOf("Gecko/")) > -1) {
+ res = getArray("Gecko", "Gecko",
+ "Gecko" +
getFirstVersionNumber(userAgent, pos + 5, 4));
+ if ((pos = userAgent.indexOf("Camino/")) > -1) {
+ res[1] += "(Camino)";
+ res[2] += "(Camino" +
getVersionNumber(userAgent, pos + 7)
+ + ")";
+ } else if ((pos = userAgent.indexOf("Chimera/")) >
-1) {
+ res[1] += "(Chimera)";
+ res[2] += "(Chimera" +
getVersionNumber(userAgent, pos + 8)
+ + ")";
+ } else if ((pos = userAgent.indexOf("Firebird/")) >
-1) {
+ res[1] += "(Firebird)";
+ res[2] += "(Firebird" +
getVersionNumber(userAgent, pos + 9)
+ + ")";
+ } else if ((pos = userAgent.indexOf("Phoenix/")) >
-1) {
+ res[1] += "(Phoenix)";
+ res[2] += "(Phoenix" +
getVersionNumber(userAgent, pos + 8)
+ + ")";
+ } else if ((pos = userAgent.indexOf("Galeon/")) > -1)
{
+ res[1] += "(Galeon)";
+ res[2] += "(Galeon" +
getVersionNumber(userAgent, pos + 7)
+ + ")";
+ } else if ((pos = userAgent.indexOf("Firefox/")) >
-1) {
+ res[1] += "(Firefox)";
+ res[2] += "(Firefox" +
getVersionNumber(userAgent, pos + 8)
+ + ")";
+ } else if ((pos = userAgent.indexOf("Netscape/")) >
-1) {
+ if ((pos = userAgent.indexOf("Netscape/6")) >
-1) {
+ res[1] += "(NS6)";
+ res[2] += "(NS" +
getVersionNumber(userAgent, pos + 9)
+ + ")";
+ } else if ((pos =
userAgent.indexOf("Netscape/7")) > -1) {
+ res[1] += "(NS7)";
+ res[2] += "(NS" +
getVersionNumber(userAgent, pos + 9)
+ + ")";
+ } else if ((pos =
userAgent.indexOf("Netscape/8")) > -1) {
+ res[1] += "(NS8)";
+ res[2] += "(NS" +
getVersionNumber(userAgent, pos + 9)
+ + ")";
+ } else if ((pos =
userAgent.indexOf("Netscape/9")) > -1) {
+ res[1] += "(NS9)";
+ res[2] += "(NS" +
getVersionNumber(userAgent, pos + 9)
+ + ")";
+ } else {
+ res[1] += "(NS?)";
+ res[2] += "(NS?"
+ +
getVersionNumber(userAgent,
+
userAgent.indexOf("Netscape/") + 9) + ")";
+ }
+ }
+ } else if ((pos = userAgent.indexOf("Netscape/")) > -1) {
+ if ((pos = userAgent.indexOf("Netscape/4")) > -1) {
+ res = getArray("NS", "NS4",
+ "NS" +
getVersionNumber(userAgent, pos + 9));
+ } else
+ res = getArray("NS", "NS?",
+ "NS?" +
getVersionNumber(userAgent, pos + 9));
+ } else if ((pos = userAgent.indexOf("Chrome/")) > -1) {
+ res = getArray("KHTML", "KHTML(Chrome)",
"KHTML(Chrome"
+ + getVersionNumber(userAgent, pos + 6) +
")");
+ } else if ((pos = userAgent.indexOf("Safari/")) > -1) {
+ res = getArray("KHTML", "KHTML(Safari)",
"KHTML(Safari"
+ + getVersionNumber(userAgent, pos + 6) +
")");
+ } else if ((pos = userAgent.indexOf("Konqueror/")) > -1) {
+ res = getArray("KHTML", "KHTML(Konqueror)",
"KHTML(Konqueror"
+ + getVersionNumber(userAgent, pos + 9) +
")");
+ } else if ((pos = userAgent.indexOf("KHTML")) > -1) {
+ res = getArray("KHTML", "KHTML?",
+ "KHTML?(" + getVersionNumber(userAgent, pos +
5) + ")");
+ } else if ((pos = userAgent.indexOf("NetFront")) > -1) {
+ res = getArray("NetFront", "NetFront", "NetFront "
+ + getVersionNumber(userAgent, pos +
8));
+ } else if ((pos = userAgent.indexOf("BlackBerry")) > -1) {
+ pos = userAgent.indexOf("/", pos + 2);
+ res = getArray("BlackBerry", "BlackBerry",
"BlackBerry"
+ + getVersionNumber(userAgent, pos +
1));
+ } else if (userAgent.indexOf("Mozilla/4.") == 0
+ && userAgent.indexOf("Mozilla/4.0") < 0
+ && userAgent.indexOf("Mozilla/4.5 ") < 0) {
+ // <SPAN class="codecomment"> We will interpret
Mozilla/4.x as
+ // Netscape Communicator is and only if x</span>
+ // <SPAN class="codecomment"> is not 0 or 5</span>
+ res = getArray("Communicator", "Communicator",
"Communicator"
+ + getVersionNumber(userAgent, pos +
8));
+ } else
+ return getArray("?", "?", "?");
+ return res;
+ }
+}
=======================================
--- /dev/null
+++ /trunk/src/heuristics.c Mon Apr 30 13:46:39 2012
@@ -0,0 +1,637 @@
+/**
+ * This file contains algorithms and heuristics used to arrive various results in NDT
+ *
+ *
+ * Created : Oct 15, 2011
+ * Author:

+ */
+#include <string.h>
+#include <math.h>
+
+#include "utils.h"
+#include "logging.h"
+
+#define log_lvl_heur 0
+/**
+ * Compute link speed.
+ *
+ * Throughput is quantized into one of a group
+ * of pre-defined bins by incrementing the counter for that bin.
+ * Once the test is complete, determine link speed according to the bin
+ * with the largest counter value.
+ *
+ * The bins are defined in mbits/second.
+ *
+ * Value of bin Index : Value's meaning
+ * 0: 0 < inter-packet throughput (mbits/second) <= 0.01 - RTT
+ * 1: 0.01 < inter-packet throughput (mbits/second) <= 0.064 - Dial-up Modem
+ * 2: 0.064 < inter-packet throughput (mbits/second) <= 1.5 - Cable/DSL modem
+ * 3: 1.5 < inter-packet throughput (mbits/second) <= 10 - 10 Mbps Ethernet or WiFi 11b subnet
+ * 4: 10 < inter-packet throughput (mbits/second) <= 40 - 45 Mbps T3/DS3 or WiFi 11 a/g subnet
+ * 5: 40 < inter-packet throughput (mbits/second) <= 100 - 100 Mbps Fast Ethernet subnet
+ * 6: 100 < inter-packet throughput (mbits/second) <= 622 - a 622 Mbps OC-12 subnet
+ * 7: 622 < inter-packet throughput (mbits/second) <= 1000 - 1.0 Gbps Gigabit Ethernet subnet
+ * 8: 1000 < inter-packet throughput (mbits/second) <= 2400 - 2.4 Gbps OC-48 subnet
+ * 9: 2400 < inter-packet throughput (mbits/second) <= 10000 - 10 Gbps 10 Gigabit Ethernet/OC-192 subnet
+ * 10: bits cannot be determined - Retransmissions (this bin counts the duplicated or invalid packets and does not denote a real link type)
+ * otherwise - ?
+ *
+ * @param spds speed string array used as speed counter bins
+ * @param spd_index speed index indicating indices of the speed bin array
+ * @param c2s_linkspeed_data Data link speed as detected by server data
+ * @param c2s_linkspeed_ack Data link speed(type) as detected by server acknowledgments
+ * @param s2c_linkspeed_data Data link speed as detected by client data
+ * @param s2c_linkspeed_ack Data link speed as detected by client acknowledgments
+ * @param runave average run
+ * @param dec_cnt number of times window sizes have been decremented
+ * @param same_cnt number of times window sizes remained the same
+ * @param inc_cnt number of times window sizes have been incremented
+ * @param timeout number of times a timeout occurred (based on network packet pair times)
+ * @param dupack number of times duplicate acks were received
+ * @param is_c2stest is this a C->S test?
+ *
+ * */
+void calc_linkspeed(char spds[4][256], int spd_index, int *c2s_linkspeed_data, int *c2s_linkspeed_ack,
+ int* s2c_linkspeed_data, int *s2c_linkspeed_ack, float runave[4], u_int32_t *dec_cnt,
+ u_int32_t *same_cnt, u_int32_t *inc_cnt, int *timeout, int
*dupack,
+ int is_c2stest) {
+
+ int index = 0; // speed array indices
+ int links[16]; // link speed bin values
+ int n = 0, j = 0; // temporary iterator variables
+ int max; // max speed bin counter value
+ int total; // total of the bin counts, used to calculate percentage
+ int ifspeedlocal; // local if-speed indicator
+ FILE * fp; // log file pointer
+
+ for (n = 0; n < spd_index; n++) {
+ sscanf(spds + n,
+ "%d %d %d %d %d %d %d %d %d %d %d %d %f %d %d %d
%d %d %d",
+ &links[0], &links[1], &links[2], &links[3],
&links[4],
+ &links[5], &links[6], &links[7], &links[8],
&links[9],
+ &links[10], &links[11], runave + n, &inc_cnt,
&dec_cnt,
+ &same_cnt, &timeout, &dupack, &ifspeedlocal);
+ log_println(log_lvl_heur, " **First ele: spd=%s, runave=%f",
spds[n],
+ runave[n]);
+ max = 0;
+ index = 0;
+ total = 0;
+
+ if ((ifspeedlocal == -1) || (ifspeedlocal == 0) || (ifspeedlocal
> 10))
+ ifspeedlocal = 10; // ifspeed was probably not
collected in these cases
+
+ // get the ifspeed bin with the biggest counter value.
+ // NDT determines link speed using this
+ for (j = 0; j <= ifspeedlocal; j++) {
+ total += links[j];
+ if (max < links[j]) {
+ max = links[j];
+ index = j;
+ }
+ }
+
+ // speed data was not collected correctly
+ if (links[index] == -1)
+ index = -1;
+
+ // log
+ log_println(0, "spds[%d] = '%s' max=%d [%0.2f%%]\n", n,
spds[n], max,
+ (float) max * 100 / total);
+
+ // Assign values based on whether C2S or S2C test
+ // Note: spd[0] , [1] contains C->S test results
+ // spd[2] , spd [3] contains S->C test results
+ switch (n + (is_c2stest ? 0 : 2)) {
+ case 0:
+ *c2s_linkspeed_data = index;
+ log_print(log_lvl_heur, "Client --> Server data detects
link = ");
+ break;
+ case 1:
+ *c2s_linkspeed_ack = index;
+ log_print(log_lvl_heur, "Client <-- Server Ack's detect
link = ");
+ break;
+ case 2:
+ *s2c_linkspeed_data = index;
+ log_print(log_lvl_heur, "Server --> Client data detects
link = ");
+ break;
+ case 3:
+ *s2c_linkspeed_ack = index;
+ log_print(1, "Server <-- Client Ack's detect link =
");
+ break;
+ }
+
+ // classify link speed based on the max ifspeed seen
+ log_linkspeed(index);
+ } //end section to determine speed.
+
+} //end method calc_linkspeed
+
+/**
+ * Calculate average round-trip-time in milliseconds.
+ * @param sumRTT - The sum of all sampled round trip times
+ * @param countRTT - The number of round trip time samples
+ * @return average round trip time
+ * */
+
+double calc_avg_rtt(int sumRTT, int countRTT, double *avgRTT) {
+ *avgRTT = (double) sumRTT / countRTT;
+ log_println(log_lvl_heur,
+ "-- Average round trip time= SumRTT (%d) over countRTT
(%d)=%f",
+ sumRTT, countRTT, (*avgRTT) * .001);
+ return ((*avgRTT) * .001);
+}
+
+/**
+ * Calculate packet loss as the percentage of the lost packets vs total txed segments
+ * during the Server-To-Client throughput test.
+ *
+ * To avoid possible division by zero, sets the packet loss percentages
+ * to certain values when the CongestionSignals is 0:
+ *
+ * 0.0000000001 - link-type detected by the Bottleneck Link Detection algorithm
+ * using the C-S data packets' inter-packet arrival times indicates > 100 Mbps Fast Ethernet subnet.
+ * 0.000001 - otherwise
+
+ * @param congsnsignals - number of multiplicative
+ * downward congestion window adjustments due to all
+ * forms of congestion signals
+ * @param pktsout total number Txed segments
+ * @param c2sdatalinkspd Integer indicative of link speed, as collected in the C->S test
+ * @return packet loss value
+ * */
+double calc_packetloss(int congsnsignals, int pktsout, int c2sdatalinkspd) {
+ double packetloss = (double) congsnsignals / pktsout;
+ if (packetloss == 0) {
+ if (c2sdatalinkspd > 5)
+ packetloss = .0000000001; // set to 10^-10 for links
faster than FastE
+ else
+ packetloss = .000001; // set to 10^-6 otherwise
+ }
+ log_println(log_lvl_heur, "--packetloss=%d over %d=%f. Link spd=%d",
+ congsnsignals, pktsout, packetloss, c2sdatalinkspd);
+ return packetloss;
+}
+
+/**
+ * Calculate the percentage of packets arriving out of order.
+ * This is equal to the ratio of #duplicate acks over
+ * #actual acks recieved.
+ * @param dupackcount number of duplicate ACKs received
+ * @param actualackcount number of non-duplicate ACKs received
+ * @return percentage of packets out of order
+ * */
+double calc_packets_outoforder(int dupackcount, int actualackcount) {
+ log_println(log_lvl_heur, "--packets out of order: %f",
+ (double) dupackcount / actualackcount);
+ return ((double) dupackcount / actualackcount);
+}
+
+/**
+ * Calculate maximum theoretical throughput in bits using the Mathis equation.
+ *
+ * The Theoretical Maximum Throughput should be computed to receive
+ * Mbps instead of Mibps. This is the only variable in the NDT that is kept in
+ * Mibps, so it might lead to the inconsistent results when comparing it with the other values.
+ *
+ * @param currentMSS current maximum segment size (MSS), in octets
+ * @param rttsec average round trip time (Latency/Jitter) in seconds
+ * @param packetloss Packet loss
+ * @return maximum theoretical bandwidth
+ * */
+double calc_max_theoretical_throughput(int currentMSS, double rttsec,
+ double packetloss) {
+ double maxthruput;
+ maxthruput = (currentMSS / (rttsec * sqrt(packetloss))) * BITS_8 / KILO_BITS
+ / KILO_BITS;
+ log_println(log_lvl_heur, "--max_theoretical_thruput: %f. From
%d,%f,%f",
+ maxthruput, currentMSS, rttsec, packetloss);
+ return maxthruput;
+}
+
+/**
+ * Finalize some window sizes based on web100 values obtained
+ *
+ * @param SndWinScale SendWinScale web100 var value
+ * @param SendBuf SendBuf web100 var value
+ * @param MaxRwinRcvd MaxRwinRcvd web100 var value
+ * @param rwin Receive window value in bytes
+ * @param swin Send window value in bytes
+ * @param cwin congestion window value in bytes
+ *
+ * */
+void calc_window_sizes(int *SndWinScale, int *RcvWinScale, int SendBuf,
+ int MaxRwinRcvd, int MaxCwnd, double *rwin, double *swin,
double *cwin) {
+ if ((*SndWinScale > WINDOW_SCALE_THRESH) || (SendBuf < MAX_TCP_PORT))
+ *SndWinScale = 0;
+ if ((*RcvWinScale > WINDOW_SCALE_THRESH) || (MaxRwinRcvd <
MAX_TCP_PORT))
+ *RcvWinScale = 0;
+
+ *rwin = (double) MaxRwinRcvd * BITS_8 / KILO_BITS / KILO_BITS;
+ *swin = (double) SendBuf * BITS_8 / KILO_BITS / KILO_BITS;
+ *cwin = (double) MaxCwnd * BITS_8 / KILO_BITS / KILO_BITS;
+ log_println(
+ log_lvl_heur,
+ "--window sizes: SndWinScale= %d, RcvwinScale=%d, rwin=%f, swin=%f, cwin=%f",
+ SndWinScale, RcvWinScale, rwin, swin, cwin);
+}
+
+/**
+ * Calculate the fraction of idle time spent waiting for packets to arrive.
+ * Current retransmit timeout * timeout count = idle time spent waiting for packets to arrive.
+ * When divided by total test time, they indicate fraction of time spent idle due to RTO
+ * @param timeouts number of timeouts
+ * @param currentRTO current retransmit timeout
+ * @param totaltime total test time
+ * @return idle time fraction
+ * */
+double calc_RTOIdle(int timeouts, int currentRTO, double totaltime) {
+ double idlewaitingforpackets = (timeouts * ((double) currentRTO /
1000))
+ / totaltime;
+ log_println(log_lvl_heur, "--RTOIdle:%f", idlewaitingforpackets);
+ return idlewaitingforpackets;
+}
+
+/**
+ * Get total test time used by the Server-To-Client throughput test.
+ *
+ * @param SndLimTimeRwin SndLimTimeRwin web100 var value, cumulative time spent
+ * in the 'Receiver Limited' state during the S->C throughput
test
+ * @param SndLimTimeCwnd SndLimTimeCwnd web100 var value, cumulative time spent in
+ * 'Congestion Limited' state
+ * @param SndLimTimeSender SndLimTimeSender web100 var value, total time spend in the
+ * 'sender limited' state
+ * @return Total test time
+ * */
+int calc_totaltesttime(int SndLimTimeRwin, int SndLimTimeCwnd,
+ int SndLimTimeSender) {
+ int totaltime = SndLimTimeRwin + SndLimTimeCwnd + SndLimTimeSender;
+ log_println(log_lvl_heur, "--Total test time: %d+%d+%d=%d ", SndLimTimeRwin,
+ SndLimTimeCwnd, SndLimTimeSender, totaltime);
+ return (totaltime);
+}
+
+/**
+ * get 'Sender Limited' state time ratio
+ * @param SndLimTimeSender cumulative time spent in the 'Sender Limited' state due to own fault
+ * @param totaltime Total test time
+ * @return sender limited time ratio
+ *
+ */
+double calc_sendlimited_sndrfault(int SndLimTimeSender, int totaltime) {
+ double sendlimitedtime = (double) SndLimTimeSender / totaltime;
+ log_println(log_lvl_heur, "--Send limited time: %d over %d=%f ",
+ SndLimTimeSender, totaltime, sendlimitedtime);
+ return sendlimitedtime;
+}
+
+/**
+ * get ratio of time spent in 'send Limited' state due to receiver end limitations
+ * @param SndLimTimeRwin cumulative time spent in the 'send Limited' state due
+ * to the receiver window limits
+ * @param totaltime Total test time
+ * @return sender limited time ratio
+ *
+ */
+double calc_sendlimited_rcvrfault(int SndLimTimeRwin, int totaltime) {
+ double sendlimitedtime = (double) SndLimTimeRwin / totaltime;
+ log_println(log_lvl_heur, "--Send limited time: %d over %d=%f ",
+ SndLimTimeRwin, totaltime, sendlimitedtime);
+ return sendlimitedtime;
+}
+
+/**
+ * get ratio of time spent in 'Sender Limited' state time due to congestion
+ * @param SndLimTimeSender cumulative time spent in the 'Sender Limited' state due to congestion
+ * @param totaltime Total test time
+ * @return sender limited time ratio
+ */
+double calc_sendlimited_cong(int SndLimTimeCwnd, int totaltime) {
+ double sendlimitedtime = (double) SndLimTimeCwnd / totaltime;
+ log_println(log_lvl_heur, "--Send limited time: %d over %d=%f ",
+ SndLimTimeCwnd, totaltime, sendlimitedtime);
+ return sendlimitedtime;
+}
+
+/**
+ * Calculate actual throughput in Mbps as the ratio of total transmitted bytes
+ * over total test time
+ *
+ * @param DataBytesOut Number of bytes sent out
+ * @param totaltime Total test time in microseconds
+ * @return Actual throughput
+ */
+double calc_real_throughput(int DataBytesOut, int totaltime) {
+ double realthruput = ((double) DataBytesOut / (double) totaltime) * BITS_8;
+ log_println(log_lvl_heur, "--Actual observed throughput: %f ", realthruput);
+ return realthruput;
+}
+
+/**
+ * Calculate total time spent waiting for packets to arrive
+ *
+ * @param CurrentRTO web100 value indicating current value of the retransmit timer RTO.
+ * @param Timeouts web100 value indicating # of times the retransmit timeout has
+ * expired when the RTO backoff multiplier is
equal to one
+ * @return Actual throughput
+ */
+double cal_totalwaittime(int currentRTO, int timeoutcounters) {
+ double waitarrivetime = (double) (currentRTO * timeoutcounters) /
KILO;
+ log_println(log_lvl_heur, "--Total wait time: %f ", waitarrivetime);
+ return waitarrivetime;
+}
+
+/**
+ * Check if the S->C throughput as calculated by the midbox test , with a limited
+ * cwnd value, is better than that calculated by the S->C test.
+ *
+ * @param midboxs2cspd S->C throughput calculated by midbox tests wiht limited cwnd
+ * @param s2ctestresult throughput calculated by the s2c tests
+ * @return 1 (true) if midboxs2cspd > s2cspd, else 0.
+ */
+int is_limited_cwnd_throughput_better(int midboxs2cspd, int s2cspd) {
+ int thruputmismatch = 0;
+ if (midboxs2cspd > s2cspd)
+ thruputmismatch = 1;
+ return thruputmismatch;
+
+}
+
+/**
+ * Check if there is a possible duplex mismatch condition. This is done by checking
+ * if the S->C throughput as calculated by the C->S throughput tests is greater than
+ * that calculated by the S->C test.
+ *
+ * @param c2stestresult throughput calculated by the c2s tests
+ * @param s2ctestresult throughput calculated by the c2s tests
+ * @return 1 (true) if c2stestresult > s2ctestresult, else 0.
+ */
+int is_c2s_throughputbetter(int c2stestresult, int s2ctestresult) {
+ int c2sbetter_yes = 0;
+ if (c2stestresult > s2ctestresult)
+ c2sbetter_yes = 1;
+ return c2sbetter_yes;
+}
+
+/**
+ * Check if Multiple test mode is enabled.
+ * @param multiple value of the "multiple test mode" setting
+ * @return 1(true) if multiple test mode is on, else 0
+ */
+int isNotMultipleTestMode(int multiple) {
+ log_println(log_lvl_heur, "--multiple: %f ", multiple);
+ return (multiple == 0);
+}
+
+/**
+ * Calculate duplex mismatch in network link. The conditions to determine this:
+ *
+ * -'Congestion Limited' state time share > 90%
+ * -Theoretical Maximum Throughput > 2Mibps
+ * - # of segments transmitted containing some retransmitted data > 2 per second
+ * - Maximum slow start threshold > 0
+ * - Cumulative expired retransmit timeouts RTO > 1% of the total test time
+ * - link type detected is not wireless link
+ * - throughput measured during Middlebox test (with a limited CWND) >
+ * throughput measured during S->C test
+ * - throughput measured during C->S test > throughput measured during the S2C test
+ * @param cwndtime Time spent send limited due to congestion
+ * @param bwtheoretcl theoreticallly calculated bandwidth
+ * @param pktsretxed # of segments with retransmitted packets
+ * @param maxsstartthresh Maximum slow start threshold
+ * @param idleRTO Cumulative expired retransmit timeouts RTO
+ * @param int s2cspd Throughput calculated during S->C tests
+ * @param midboxspd Throughput calculated during middlebox tests
+ * @param multiple is multiple test mode on?
+ * @return int 1 if duplex mismatch is found, 0 if not.
+ * */
+int detect_duplexmismatch(double cwndtime, double bwtheoretcl, int pktsretxed,
+ double timesec, int maxsstartthresh, double idleRTO, int link,
+ int s2cspd, int midboxspd, int multiple) {
+ int duplex_mismatch_yes = 0;
+ if ((cwndtime > .9) // more than 90% time spent being receiver window limited
+ && (bwtheoretcl > 2) // theoretical max goodput > 2mbps
+ && (pktsretxed / timesec > 2)
+ // #of segments with pkt-retransmissions> 2
+ && (maxsstartthresh > 0) // max slow start threshold
> 0
+ && (idleRTO > .01) // cumulative RTO time > 1% test duration
+ && (link > 2) // not wireless link
+ && is_limited_cwnd_throughput_better(midboxspd, s2cspd) //S->C throughput calculated
+ // by server < client value
+ && isNotMultipleTestMode(multiple)) {
+
+ duplex_mismatch_yes = 1;
+ } //end if
+ log_println(log_lvl_heur, "--duplexmismatch?: %d ",
duplex_mismatch_yes);
+ return duplex_mismatch_yes;
+}
+
+/** Check if internal link is duplex mismatched
+ * @param s2cspd Throughput calculated during the S->C test
+ * @param realthruput actual observed throuput
+ * @param rwintime time spend limited sending due to receive window limitations
+ * @param packetloss packet loss during S->C tests
+ * return 1 if internal duplex mismatch is found, else 0
+ * */
+int detect_internal_duplexmismatch(double s2cspd, double realthruput,
+ double rwintime, double packetloss) {
+ int duplex_mismatch_yes = 0;
+ if ((s2cspd > 50) // S->C goodput > 50 Mbps
+ && (realthruput < 5) // actual send throughput < 5 Mbps
+ && (rwintime > .9) // receive window limited for >90% of the time
+ && (packetloss < .01)) {
+ duplex_mismatch_yes = 1;
+ }
+ log_println(log_lvl_heur, "--internal duplexmismatch?: %d ",
+ duplex_mismatch_yes);
+ return duplex_mismatch_yes;
+}
+
+/**
+ * Determine whether faulty hardware is affecting performance by observing some
+ * threshold values. Particularly, see if
+ * - connection is losing more than 15 packets/second
+ * - connections spends > 60% in congestion window limited state
+ * - packet loss < 1% of packets txed
+ * - connection entered TCP slow start stage
+ *
+ * This heuristic seems to in error:
+ * 1) Instead of obtaining
+ * packet per second loss rate = count_lost_packets / test_duration, the loss rate is multiplied times 100.
+ * If "packet loss" is less than 1% (3rd condition), then the packet loss multiplied by 100 and divided by the
+ * total test time in seconds will be less than 1 anyway.
+ * 2) 'Congestion Limited' state time ratio need not be divided by the total_test
+ * time_in_seconds , but be directly compared to "0.6".
+ * @param packetloss packetloss calculated
+ * @param cwndtime congestion window limited time
+ * @param timesec total test time
+ * @param maxslowstartthresh max slow start threshold value
+ * @return 1 is fault hardware suspected, 0 otherwise
+ * */
+int detect_faultyhardwarelink(double packetloss, double cwndtime,
+ double timesec, int maxslowstartthresh) {
+ int faultyhw_found = 0;
+ if (((packetloss * 100) / timesec > 15) && (cwndtime / timesec > .6)
+ && (packetloss < .01) && (maxslowstartthresh > 0)) {
+ faultyhw_found = 1;
+ }
+ log_println(log_lvl_heur, "--faulty hardware?: %d ", faultyhw_found);
+ return faultyhw_found;
+
+}
+
+/**
+ * Determine whether link is an ethernet link:
+ * the WiFi and DSL/Cable modem are not detected,
+ * the total Send Throughput is in the range [3 , 9.5] (not inclusive)
+ * and the connection is very stable.
+ *
+ * This specific conditions are:
+ * - actual measured throughput < 9.5 Mbps, but > 3 Mbps
+ * - S->C throughput < 9.5 Mbps
+ * - packet loss < 1%
+ * - out of order packets proportion < .35
+ * - the heuristics for WiFi and DSL/Cable modem links give negative results
+ * @param realthruput Actual calculated throughput
+ * @param s2cspd S->C throuhput
+ * @param packetloss packet loss seen
+ * @param oo_order out-pf-order packet ration
+ * @param link integer indicative of link type
+ * @return 1 if ethernet link, 0 otherwise
+ * */
+int detect_ethernetlink(double realthruput, double s2cspd, double packetloss,
+ double oo_order, int link) {
+ int is_ethernet = 0;
+ if ((realthruput < 9.5) && (realthruput > 3.0) && ((s2cspd / 1000) <
9.5)
+ && (packetloss < .01) && (oo_order < .035) && (link >
0)) {
+ is_ethernet = 1;
+ }
+ log_println(log_lvl_heur, "--Is ethernet?: %d ", is_ethernet);
+ return is_ethernet;
+}
+
+/**
+ * Determine whether link is a wireless link:
+ * DSL/Cable modem are not detected, the NDT Client
+ * is a bottleneck and actual observed Throughput < 5 Mbps,
+ * but the Theoretical Maximum Throughput is > 50 Mibps.
+ *
+ * This specific conditions are:
+ * - The cumulative time spent in the 'Sender Limited' state is 0 ms
+ * - The actual (real, measured) throughput < 5 Mbps
+ * - theoretical bw calculated > 50 Mibps
+ * - # of transitions into 'Receiver Limited' state == # of transitions
+ * into'Congestion Limited' state
+ * - 'Receiver Limited' state time ratio is greater than 90%
+ * - the heuristics for WiFi and DSL/Cable modem links give negative results
+ * @param sendtime cumulative time spent in "sender limited" state
+ * @param realthruput Actual calculated throughput
+ * @param bw_theortcl Theoretical bandwidth
+ * @param sndlimtrans_rwin # of transitions into rcvr-limited state
+ * @param sndlimtrans_cwnd # of transitions into cwnd-limited state
+ * @param double rwindowtime "receive window limited" cumulative time
+ * @param link integer indicative of link type
+ * @return 1 if wireless link, 0 otherwise
+ * */
+int detect_wirelesslink(double sendtime, double realthruput, double bw_theortcl,
+ int sndlimtrans_rwin, int sndlimtrans_cwnd, double
rwindowtime,
+ int link) {
+ int is_wireless = 0;
+ if ((sendtime == 0) && (realthruput < 5) && (bw_theortcl > 50)
+ && ((sndlimtrans_rwin / sndlimtrans_cwnd) == 1)
+ && (rwindowtime > .90) && (link > 0)) {
+ is_wireless = 1;
+ }
+ log_println(log_lvl_heur, "--Is wireless?: %d ", is_wireless);
+ return is_wireless;
+}
+
+/**
+ *
+ * The link is treated as a DSL/Cable modem when the NDT Server isn't a
+ * bottleneck and the Total Send Throughput is less than 2 Mbps and
+ * less than the Theoretical Maximum Throughput.
+ *
+ * The specific conditions used:
+ * - The cumulative time spent in the 'Sender Limited' state is less than 0.6 ms
+ * - The number of transitions into the 'Sender Limited' state is 0
+ * - The Total Send Throughput is less than 2 Mbps
+ * - The Total Send Throughput is less than Theoretical Maximum Throughput
+ *
+ * @param sndlimtimesender cumulative time spent in the 'Sender Limited' state
+ * @param sndlimtranssender # of transitions into sender limited state
+ * @param realthruput Actual calculated throughput
+ * @param bw_theoretical Theoretical bandwidth
+ * @param link integer indicative of link type
+ * @return 1 if wireless link, 0 otherwise
+ * */
+int detect_DSLCablelink(int sndlim_timesender, int sndlim_transsender,
+ double realthruput, double bw_theoretical, int link) {
+ int is_dslorcable = 0;
+ if ((sndlim_timesender < 600) && (sndlim_transsender == 0)
+ && (realthruput < 2) && (realthruput < bw_theoretical)
+ && (link > 0)) {
+ is_dslorcable = 1;
+ }
+ log_println(log_lvl_heur, "--Is DSL/Cable?: %d ", is_dslorcable);
+ return is_dslorcable;
+
+}
+
+/**
+ * Determine if there is a half-duplex link in the path by looking at
+ * web100 variables. Look for a connection that toggles rapidly
+ * between the sender buffer limited and receiver buffer limited states, but
+ * does not remain in the sender-buffer-limited-state and instead spends
95%
+ * time in rcvr-buffer-limited state.
+ *
+ * The specific conditions used:
+ * - 'Receiver Limited' state time ratio > 95%
+ * - # of transitions into the 'Receiver Limited' state > 30 per second
+ * - # of transitions into the 'Sender Limited' state > 30 per second
+ *
+ * @param rwintime 'Receiver Limited' state time ratio
+ * @param sndlim_transrwin # of transitions into receiver limited state
+ * @param sndlim_transsender # of transitions into sender limited state
+ * @param totaltesttime total test time
+ * @return 1 if half_duplex link suspected, 0 otherwise
+ * */
+int detect_halfduplex(double rwintime, int sndlim_transrwin,
+ int sndlim_transsender, double totaltesttime) {
+ int is_halfduplex = 0;
+ if ((rwintime > .95) && (sndlim_transrwin / totaltesttime > 30)
+ && (sndlim_transsender / totaltesttime > 30)) {
+ is_halfduplex = 1;
+ }
+ log_println(log_lvl_heur, "--Is Half_duplex detected? %d ", is_halfduplex);
+ return is_halfduplex;
+}
+
+/**
+ * Congestion is detected when the connection is
+ * congestion limited a non-trivial percent of the time,
+ * there isn't a duplex mismatch detected and the NDT
+ * Client's receive window is not the limiting factor.
+ *
+ * The specific conditions used:
+ * - 'Congestion Limited' state time share is greater than 2%
+ * - Duplex mismatch condition heuristic gives negative results
+ * - Max window advertisement received > than the maximum
+ * congestion window used during Slow Start
+ *
+ * @param cwndtime time spent in being send-limited due to congestion window
+ * @param mismatch id duplex_mismatch detected?
+ * @param cwin congestion window size
+ * @param rwin max window size advertisement rcvd
+ * @param rttsec total round-trip time
+ * @return 1 if congestion detected, 0 otherwise
+ * */
+int detect_congestionwindow(double cwndtime, int mismatch, double cwin,
+ double rwin, double rttsec) {
+ int is_congested = 0;
+ if ((cwndtime > .02) && (mismatch == 0)
+ && ((cwin / rttsec) < (rwin / rttsec))) {
+ is_congested = 1;
+ }
+ log_println(log_lvl_heur, "--Is congested? %d ", is_congested);
+ return is_congested;
+}
=======================================
--- /dev/null
+++ /trunk/src/heuristics.h Mon Apr 30 13:46:39 2012
@@ -0,0 +1,95 @@
+/**
+ * This file contains function declarations for heuristics and algorithms.
+ *
+ * Created : Oct 2011
+ * Author:

+ */
+
+#ifndef HEURISTICS_H_
+#define HEURISTICS_H_
+
+// link speed algorithms
+void calc_linkspeed(char *spds, int spd_index, int *c2sdata, int *c2sack,
+ int* s2cdata, int *s2cack, float runave[4], u_int32_t
*dec_cnt,
+ u_int32_t *same_cnt, u_int32_t *inc_cnt, int *timeout, int
*dupack,
+ int isc2stest);
+
+// calculate average round trip time
+double calc_avg_rtt(int sumRTT, int countRTT, double * avgRTT);
+
+// calculate packet loss percentage
+double calc_packetloss(int congsnsignals, int pktsout, int c2sdatalinkspd);
+
+// Calculate the percentage of packets arriving out of order
+double calc_packets_outoforder(int dupackcount, int actualackcount);
+
+// calculate theoretical maximum goodput in bits
+double calc_max_theoretical_throughput(int currentMSS, double rttsec,
+ double packetloss);
+
+// finalize some window sizes
+void calc_window_sizes(int *SndWinScale, int *RcvWinScale, int SendBuf,
+ int MaxRwinRcvd, int MaxCwnd, double *rwin, double *swin,
double *cwin);
+
+// calculate RTO Idle time
+double calc_RTOIdle(int timeouts, int CurrentRTO, double totaltime);
+
+// calculate total test time for S_C test
+int calc_totaltesttime(int SndLimTimeRwin, int SndLimTimeCwnd,
+ int SndLimTimeSender);
+
+// get time ratio of 'Sender Limited' time due to congestion
+double calc_sendlimited_cong(int SndLimTimeCwnd, int totaltime);
+
+// get time ratio of 'Sender Limited' time due to receivers fault
+double calc_sendlimited_rcvrfault(int SndLimTimeRwin, int totaltime);
+
+// get time ratio of 'Sender Limited' time due to sender's fault
+double calc_sendlimited_sndrfault(int SndLimTimeSender, int totaltime);
+
+// Calculate actual throughput in Mbps
+double calc_real_throughput(int DataBytesOut, int totaltime);
+
+// Calculate total time spent waiting for packets to arrive
+double cal_totalwaittime(int currentRTO, int timeoutcounters);
+
+// Is throughput measured greater in value during the C->S than S->C test?
+int is_c2s_throughputbetter(int c2stestresult, int s2ctestresult);
+
+// Check if the S->C throughput computed with a limited
+// cwnd value throughput test is better than that calculated by the S->C test.
+int is_limited_cwnd_throughput_better(int midboxs2cspd, int s2cspd);
+
+// Is Multiple test mode enabled?
+int isNotMultipleTestMode(int multiple);
+
+// detect duplex mismatch mode
+int detect_duplexmismatch(double cwndtime, double bwtheoretcl, int pktsretxed,
+ double timesec, int maxsstartthresh, double idleRTO, int link,
+ int s2cspd, int midboxspd, int multiple);
+
+// detect if faulty hardware may exist
+int detect_faultyhardwarelink(double packetloss, double cwndtime,
+ double timesec, int maxslowstartthresh);
+
+// Is this an ethernet link?
+int detect_ethernetlink(double realthruput, double s2cspd, double packetloss,
+ double oo_order, int link);
+
+// Is wireless link?
+int detect_wirelesslink(double sendtime, double realthruput, double bw_theortcl,
+ int sndlimtrans_rwin, int sndlimtrans_cwnd, double
rwindowtime,
+ int link);
+
+// Is DSL/Cable modem?
+int detect_DSLCablelink(int sndlim_timesender, int sndlim_transsender,
+ double realthruput, double bw_theoretical, int link);
+
+// Is a half_duplex link present?
+int detect_halfduplex(double rwintime, int sndlim_transrwin,
+ int sndlim_transsender, double totaltesttime);
+
+// Is congestion detected?
+int detect_congestionwindow(double cwndtime, int mismatch, double cwin,
+ double rwin, double rttsec);
+#endif /* HEURISTICS_H_ */
=======================================
--- /dev/null
+++ /trunk/src/ndtptestconstants.c Mon Apr 30 13:46:39 2012
@@ -0,0 +1,92 @@
+/**
+ * This file is used to store constants related to the NDTP tests.
+ * It also defines functions to get descriptive names for tests
+ * and such utility functionality.
+ *
+ * Created on: Sep 29, 2011
+ * Author: kkumar
+ */
+
+#include <string.h>
+#include "ndtptestconstants.h"
+
+// The arrays below rely on the ordering of corresponding enum in the .h file.
+// test names
+static char *_teststatusdescarray[] = { "test_not_started", "test_started",
+ "test_in_progress", "test_incomplete", "test_complete" };
+
+// names of tests.
+static char *_testnamesarray[] = { "None", "Middlebox", "SFW", "C2S", "S2C",
+ "Meta" };
+
+// names of test messages to log in descriptive names instead of numbers
+static char * _testmsgtypesarray[] = { "COMM_FAILURE", "SRV_QUEUE", "MSG_LOGIN",
+ "TEST_PREPARE", "TEST_START", "TEST_MSG", "TEST_FINALIZE",
"MSG_ERROR",
+ "MSG_RESULTS", "MSG_LOGOUT", "MSG_WAITING", };
+
+// names of protocol message transmission directions
+static char *_txdirectionsarray[] = { "none", "client_to_server",
+ "server_to_client" };
+
+static char *_msgbodyformattype[] = { "bitfield", "string", "none" };
+
+/**
+ * Get descriptive string for test name
+ * @param testid Id of the test
+ * @param *snamearg storage for test name description
+ * @return char* Descriptive string for test name
+ * */
+char *get_testnamedesc(enum TEST_ID testid, char *snamearg) {
+ snamearg = _testnamesarray[testid];
+ //printf ("--current test name = %s for %d\n", snamearg ,testid);
+ return snamearg;
+}
+
+/**
+ * Get descriptive string for test status
+ * @param teststatus Integer status of the test
+ * @param *sstatusarg storage for test status description
+ * @return char* Descriptive string for test status
+ * */
+char *get_teststatusdesc(enum TEST_STATUS_INT teststatus, char *sstatusarg) {
+ sstatusarg = _teststatusdescarray[teststatus];
+ //printf ("--current test status = %s, for %d \n", sstatusarg, teststatus);
+ return sstatusarg;
+}
+
+/**
+ * Get descriptive string for test direction.
+ * Directions could be C->S or S->C, currently.
+ * @param testdirection Test direction
+ * @param *sdirnarg storage for test direction
+ * @return char* Descriptive string fr Test direction
+ * */
+char *get_testdirectiondesc(enum Tx_DIRECTION testdirection, char *sdirnarg) {
+ sdirnarg = _txdirectionsarray[testdirection];
+ //printf ("--current test direction = %s , for %d\n", sdirnarg, testdirection);
+ return sdirnarg;
+}
+
+/**
+ * Get descriptive string for protocol message types.
+ *
+ * @param msgtype Test direction
+ * @param *smsgtypearg storage for test direction
+ * @return char* Descriptive string for Message type
+ * */
+char *get_msgtypedesc(int msgtype, char *smsgtypearg) {
+ smsgtypearg = _testmsgtypesarray[msgtype];
+ //printf ("--current test type = %s , for %d\n", smsgtypearg,
msgtype);
+ return smsgtypearg;
+}
+
+/**
+ * Get descriptive name for message body format type
+ * @param bodymsgformat Message body format type
+ * @param smsgformattypearg descriptive string for message body format type
+ * @return
+ */
+char * getmessageformattype(enum MSG_BODY_TYPE bodymsgformat, char *smsgformattypearg) {
+ smsgformattypearg = _msgbodyformattype[bodymsgformat];
+ return smsgformattypearg;
+}
=======================================
--- /dev/null
+++ /trunk/src/ndtptestconstants.h Mon Apr 30 13:46:39 2012
@@ -0,0 +1,57 @@
+/**
+ * This file defines the various test types and other constants that the NDT protocol currently supports/uses.
+ * This is used to define constants related to the test-suite, specifically.
+ *
+ * */
+
+#ifndef _JS_NDTPTESTS_H
+#define _JS_NDTPTESTS_H
+
+#define TEST_NONE 0
+#define TEST_MID (1L << 0)
+#define TEST_C2S (1L << 1)
+#define TEST_S2C (1L << 2)
+#define TEST_SFW (1L << 3)
+#define TEST_STATUS (1L << 4)
+#define TEST_META (1L << 5)
+
+#define TEST_NAME_DESC_SIZE 10 /* will hold "string "middlebox", which is the longest name */
+#define TEST_STATUS_DESC_SIZE 18 /* test status < 18 chars */
+#define TEST_DIRN_DESC_SIZE 20 /* direction is either client_to_server or server_to_client */
+#define MSG_TYPE_DESC_SIZE 15 /* max size for now derived from "TEST_FINALIZE" */
+#define MSG_BODY_FMT_SIZE 10 /* max size for desc "NOT_KNOWN" */
+
+// port numbers
+#define PORT "3001"
+#define PORT2 "3002"
+#define PORT3 "3003"
+#define PORT4 "3003"
+
+
+/* status of tests. Used mainly to log a "textual" explanation using below array */
+enum TEST_STATUS_INT {
+ TEST_NOT_STARTED, TEST_STARTED, TEST_INPROGRESS, TEST_INCOMPLETE, TEST_ENDED
+} teststatusint;
+
+/* Test IDs */
+enum TEST_ID {
+ NONE, MIDDLEBOX, SFW, C2S, S2C, META
+} testid;
+
+/* Transmission direction */
+enum Tx_DIRECTION {
+ NO_DIR, C_S, S_C
+} txdirection;
+
+enum MSG_BODY_TYPE {
+ BITFIELD, STRING, NOT_KNOWN
+} bodyformattype;
+
+char *get_testnamedesc(enum TEST_ID testid, char *stestnamearg);
+char *get_teststatusdesc(enum TEST_STATUS_INT teststatus, char *steststatusarg);
+char *get_testdirectiondesc(enum Tx_DIRECTION testdirection,
+ char *stestdirectionarg);
+char *get_msgtypedesc(int msgtypearg, char *smsgtypearg);
+char * getmessageformattype(enum MSG_BODY_TYPE bodymsgformat, char *smsgformattypearg) ;
+
+#endif
=======================================
--- /dev/null
+++ /trunk/src/runningtest.c Mon Apr 30 13:46:39 2012
@@ -0,0 +1,154 @@
+/**
+ * This file contains functions that help get/set the currently
+ * running test
+ *
+ * Created on: Sep 28, 2011
+ * Author: kkumar
+ */
+#include "ndtptestconstants.h"
+#include "runningtest.h"
+
+static int currentTest = TEST_NONE;
+static enum Tx_DIRECTION currentDirection = NONE;
+static char *senddirnstr;
+static char *recvdirnstr;
+
+/**
+ * array defining possible events pertaining to process status
+ */
+static char *_procstatusarray[] = { "unknown", "started", "completed" };
+
+/** array defining various "processes" like a web100srv process,
+ * or a client connection
+ */
+static char *_proctypesarray[] = { "process", "connect" };
+
+/**
+ * Get ID of currently running test
+ * @return integer current running test Id
+ * */
+int getCurrentTest() {
+ return currentTest;
+}
+
+/** Set the id of the currently running test.
+ * @param testId Id of the currently running test
+ */
+
+void setCurrentTest(int testId) {
+ currentTest = testId;
+}
+
+/**
+ * Get the current direction of the test.
+ * @return integer direction corresponding to an enumerator
+ * */
+int getCurrentDirn() {
+ return currentDirection;
+}
+
+/** Set the test directions for the current process.
+ * For example, for server process,
+ * the current-test-direction = S->C (send direction)
+ * , and the other/reverse
+ * direction is C->S (i.e the receive direction)
+ * This method has to be invoked by every process
+ * that decides to have protocol logging.
+ * An example direction: client->server or vice
+ * versa.
+ * @param directionarg direction of the currently running process
+ */
+
+void setCurrentDirn(enum Tx_DIRECTION directionarg) {
+ currentDirection = directionarg;
+ char currenttestdirn[TEST_DIRN_DESC_SIZE];
+ char othertestdirn[TEST_DIRN_DESC_SIZE];
+ switch (currentDirection) {
+ case S_C:
+ senddirnstr = get_testdirectiondesc(currentDirection,
currenttestdirn);
+ recvdirnstr = get_testdirectiondesc(C_S, othertestdirn);
+ break;
+ case C_S:
+ senddirnstr = get_testdirectiondesc(currentDirection,
currenttestdirn);
+ recvdirnstr = get_testdirectiondesc(S_C, othertestdirn);
+ break;
+ case NO_DIR:
+ default:
+ senddirnstr = get_testdirectiondesc(NO_DIR, currenttestdirn);
+ recvdirnstr = get_testdirectiondesc(NO_DIR, othertestdirn);
+ ;
+ break;
+ }
+}
+
+/**
+ * Get a description of the currently running test
+ * @return descriptive name for the currently running test
+ */
+char *get_currenttestdesc() {
+ enum TEST_ID currenttestId = NONE;
+ char currenttestdesc[TEST_NAME_DESC_SIZE];
+ switch (getCurrentTest()) {
+ case TEST_MID:
+ currenttestId = MIDDLEBOX;
+ break;
+ case TEST_C2S:
+ currenttestId = C2S;
+ break;
+ case TEST_S2C:
+ currenttestId = S2C;
+ break;
+ case TEST_SFW:
+ currenttestId = SFW;
+ break;
+ case TEST_META:
+ currenttestId = META;
+ break;
+ case TEST_NONE:
+ default:
+ currenttestId = NONE;
+ break;
+ }
+ return get_testnamedesc(currenttestId, currenttestdesc);
+}
+
+/**
+ * get the current (send) direction. For example,
+ * if this is the server process, then local direction = S->C
+ * @return char* descriptive text of the current local direction
+ * */
+char *get_currentdirndesc() {
+ return senddirnstr;
+}
+
+/**
+ * get the current reverse(recv) direction. For example,
+ * if this is the server process, then local direction = C->S
+ * @return char* descriptive text of the current reverse direction
+ * */
+char *get_otherdirndesc() {
+ return recvdirnstr;
+}
+
+/**
+ * get descriptive test for status of process
+ * @return char* descriptive text of the process status
+ * */
+char *get_procstatusdesc(enum PROCESS_STATUS_INT procstatusarg, char *sprocarg) {
+ sprocarg = _procstatusarray[procstatusarg];
+ printf("--current process status = %s for %d\n", sprocarg,
procstatusarg);
+ return sprocarg;
+}
+
+/**
+ * Get descriptive string for process name
+ * @param procid Id of the test
+ * @param *snamearg storage for test name description
+ * @return char* Descriptive string for process (process, connect )
+ * */
+char *get_processtypedesc(enum PROCESS_TYPE_INT procidarg, char *snamearg) {
+ snamearg = _proctypesarray[procidarg];
+ printf("--current process name = %s for %d\n", snamearg, procidarg);
+ return snamearg;
+}
+
=======================================
--- /dev/null
+++ /trunk/src/runningtest.h Mon Apr 30 13:46:39 2012
@@ -0,0 +1,33 @@
+/**
+ * runningtest.h
+ *
+ * Created on: Sep 29, 2011
+ * Author: kkumar
+ */
+
+#ifndef RUNNINGTEST_H_
+#define RUNNINGTEST_H_
+
+#define PROCESS_STATUS_DESC_SIZE 17 // suffice to hold status defined below
+// indicates the status of process like the web100srv or web100clt
+//enum PROCESS_STATUS_INT { UNKNOWN, PROCESS_STARTED, PROCESS_ENDED };
+enum PROCESS_STATUS_INT {
+ UNKNOWN, PROCESS_STARTED, PROCESS_ENDED
+};
+
+enum PROCESS_TYPE_INT {
+ PROCESS_TYPE, CONNECT_TYPE
+};
+
+int getCurrentTest();
+void setCurrentTest(int testId);
+char *get_currenttestdesc();
+int getCurrentDirn();
+void setCurrentDirn(enum Tx_DIRECTION directionarg);
+int getCurrentDirn();
+char *get_currentdirndesc();
+char *get_otherdirndesc();
+char *get_procstatusdesc(enum PROCESS_STATUS_INT procstatusarg, char *sprocarg);
+char *get_processtypedesc(enum PROCESS_TYPE_INT procid, char *snamearg);
+
+#endif /* RUNNINGTEST_H_ */
=======================================
--- /dev/null
+++ /trunk/src/strlutils.c Mon Apr 30 13:46:39 2012
@@ -0,0 +1,84 @@
+/* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */
+
+/*
+ * Copyright (c) 1998 Todd C. Miller
<>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/types.h>
+#include <string.h>
+
+/*
+ * Copy src to string dst of size siz. At most siz-1 characters
+ * will be copied. Always NUL terminates (unless siz == 0).
+ * Returns strlen(src); if retval >= siz, truncation occurred.
+ */
+size_t strlcpy(char *dst, const char *src, size_t siz) {
+ char *d = dst;
+ const char *s = src;
+ size_t n = siz;
+
+ /* Copy as many bytes as will fit */
+ if (n != 0) {
+ while (--n != 0) {
+ if ((*d++ = *s++) == '\0')
+ break;
+ }
+ }
+
+ /* Not enough room in dst, add NUL and traverse rest of src */
+ if (n == 0) {
+ if (siz != 0)
+ *d = '\0'; /* NUL-terminate dst */
+ while (*s++)
+ ;
+ }
+
+ return (s - src - 1); /* count does not include NUL */
+}
+
+/*
+ * Appends src to string dst of size siz (unlike strncat, siz is the
+ * full size of dst, not space left). At most siz-1 characters
+ * will be copied. Always NUL terminates (unless siz <= strlen(dst)).
+ * Returns strlen(src) + MIN(siz, strlen(initial dst)).
+ * If retval >= siz, truncation occurred.
+ */
+size_t strlcat(dst, src, siz)
+ char *dst;const char *src;size_t siz; {
+ register char *d = dst;
+ register const char *s = src;
+ register size_t n = siz;
+ size_t dlen;
+
+ /* Find the end of dst and adjust bytes left but don't go past end */
+ while (n-- != 0 && *d != '\0')
+ d++;
+ dlen = d - dst;
+ n = siz - dlen;
+
+ if (n == 0)
+ return (dlen + strlen(s));
+ while (*s != '\0') {
+ if (n != 1) {
+ *d++ = *s;
+ n--;
+ }
+ s++;
+ }
+ *d = '\0';
+
+ return (dlen + (s - src)); /* count does not include NUL */
+}
+
=======================================
--- /dev/null
+++ /trunk/src/strlutils.h Mon Apr 30 13:46:39 2012
@@ -0,0 +1,35 @@
+/* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */
+
+/*
+ * Copyright (c) 1998 Todd C. Miller
<>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef strlcpy_H
+#define strlcpy_H
+
+#include <sys/types.h>
+#include <string.h>
+
+/*
+ * Copy src to string dst of size siz. At most siz-1 characters
+ * will be copied. Always NUL terminates (unless siz == 0).
+ * Returns strlen(src); if retval >= siz, truncation occurred.
+ */
+extern size_t
+strlcpy(char *dst, const char *src, size_t siz);
+size_t strlcat(char *dst, const char *src, size_t siz);
+
+#endif
+
=======================================
--- /dev/null
+++ /trunk/src/test_c2s_srv.c Mon Apr 30 13:46:39 2012
@@ -0,0 +1,444 @@
+/**
+ * This file contains methods to perform the C2S tests.
+ * This test intends to measure throughput from the client to the
+ * server by performing a 10 seconds memory-to-memory data transfer.
+ *
+ * Created : Oct 2011
+ * Author:

+ */
+
+#include <syslog.h>
+#include <pthread.h>
+#include <sys/times.h>
+#include "tests_srv.h"
+#include "strlutils.h"
+#include "ndtptestconstants.h"
+#include "utils.h"
+#include "testoptions.h"
+#include "runningtest.h"
+#include "logging.h"
+#include "protocol.h"
+#include "network.h"
+
+int mon_pipe1[2]; // used to store file descriptors of pipes created for ndttrace for C2S tests
+
+
+/**
+ * Perform the C2S Throughput test. This test intends to measure throughput
+ * from the client to the server by performing a 10 seconds memory-to-memory data transfer.
+ *
+ * Protocol messages are exchanged between the Client and the Server using the same
+ * connection and message format as the NDTP-Control protocol.Throughput packets are
+ * sent on the new connection and do not follow the NDTP-Control protocol message format.
+ *
+ * When the Client stops streaming the test data (or the server test routine times out),
+ * the Server sends the Client its calculated throughput value.
+ *
+ * @param ctlsockfd Client control socket descriptor
+ * @param agent Web100 agent used to track the connection
+ * @param testOptions Test options
+ * @param conn_options connection options
+ * @param c2sspd In-out parameter to store C2S throughput value
+ * @param set_buff enable setting TCP send/recv buffer size to be used (seems unused in file)
+ * @param window value of TCP send/rcv buffer size intended to be used.
+ * @param autotune autotuning option. Deprecated.
+ * @param device string device name inout parameter
+ * @param options Test Option variables
+ * @param record_reverse integer indicating whether receiver-side statistics have to be logged
+ * @param count_vars count of web100 variables
+ * @param spds[] [] speed check array
+ * @param spd_index index used for speed check array
+ * @param conn_options Connection options
+ * @return 0 - success,
+ * >0 - error code
+ * Error codes:
+ * -1 - Listener socket creation failed
+ * -100 - timeout while waiting for client to connect to serverÕs ephemeral port
+ * -errno - Other specific socket error numbers
+ * -101 - Retries exceeded while waiting for client to
connect
+ * -102 - Retries exceeded while waiting for data from
connected client
+ *
+ */
+int test_c2s(int ctlsockfd, web100_agent* agent, TestOptions* testOptions,
+ int conn_options, double* c2sspd, int set_buff, int window,
+ int autotune, char* device, Options* options, int
record_reverse,
+ int count_vars, char spds[4][256], int* spd_index) {
+ int recvsfd; // receiver socket file descriptor
+ pid_t c2s_childpid = 0; // child process pids
+ int msgretvalue, tmpbytecount; // used during the "read"/"write"
process
+ int i, j; // used as loop iterators
+
+ struct sockaddr_storage cli_addr;
+
+ socklen_t clilen;
+ char tmpstr[256]; // string array used for all sorts of temp storage purposes
+ double tmptime; // time indicator
+ double bytes_read = 0; // number of bytes read during the throughput
tests
+ struct timeval sel_tv; // time
+ fd_set rfd; // receive file descriptor
+ char buff[BUFFSIZE + 1]; // message "payload" buffer
+ PortPair pair; // socket ports
+ I2Addr c2ssrv_addr = NULL; // c2s test's server address
+ //I2Addr src_addr=NULL; // c2s test source address
+ char listenc2sport[10]; // listening port
+ pthread_t workerThreadId;
+
+ // web_100 related variables
+ web100_group* group;
+ web100_connection* conn;
+
+ // snap related variables
+ SnapArgs snapArgs;
+ snapArgs.snap = NULL;
+ snapArgs.log = NULL;
+ snapArgs.delay = options->snapDelay;
+ wait_sig = 0;
+
+ // Test ID and status descriptors
+ enum TEST_ID testids = C2S;
+ enum TEST_STATUS_INT teststatuses = TEST_NOT_STARTED;
+ enum PROCESS_STATUS_INT procstatusenum = UNKNOWN;
+ enum PROCESS_TYPE_INT proctypeenum = CONNECT_TYPE;
+ char namesuffix[256] = "c2s_snaplog";
+ char currenttestdesc[TEST_NAME_DESC_SIZE] = "c2s" ;
+
+ if (testOptions->c2sopt) {
+ setCurrentTest(TEST_C2S);
+ log_println(1, " <-- %d - C2S throughput test -->",
+ testOptions->child0);
+ strlcpy(listenc2sport, PORT2, sizeof(listenc2sport));
+
+ //log protocol validation logs
+ teststatuses = TEST_STARTED;
+ protolog_status(testOptions->child0, testids, teststatuses,
ctlsockfd);
+
+ // Determine port to be used. Compute based on options set
earlier
+ // by reading from config file, or use default port2 (3002).
+ if (testOptions->c2ssockport) {
+ sprintf(listenc2sport, "%d",
testOptions->c2ssockport);
+ } else if (testOptions->mainport) {
+ sprintf(listenc2sport, "%d", testOptions->mainport +
1);
+ }
+
+ if (testOptions->multiple) {
+ strlcpy(listenc2sport, "0", sizeof(listenc2sport));
+ }
+
+ // attempt to bind to a new port and obtain address structure with details of listening port
+ while (c2ssrv_addr == NULL) {
+ c2ssrv_addr =
+ CreateListenSocket(
+ NULL,
+
(testOptions->multiple ?
+
mrange_next(listenc2sport) : listenc2sport), conn_options, 0)
+ ;
+ if (strcmp(listenc2sport, "0") == 0) {
+ log_println(0, "WARNING: ephemeral port number was
bound");
+ break;
+ }
+ if (testOptions->multiple == 0) {
+ break;
+ }
+ }
+ if (c2ssrv_addr == NULL) {
+ log_println(
+ 0,
+ "Server (C2S throughput test):
CreateListenSocket failed: %s",
+ strerror(errno));
+ sprintf(
+ buff,
+ "Server (C2S throughput test):
CreateListenSocket failed: %s",
+ strerror(errno));
+ send_msg(ctlsockfd, MSG_ERROR, buff, strlen(buff));
+ return -1;
+ }
+
+ // get socket FD and the ephemeral port number that client will connect to run tests
+ testOptions->c2ssockfd = I2AddrFD(c2ssrv_addr);
+ testOptions->c2ssockport = I2AddrPort(c2ssrv_addr);
+ log_println(1, " -- port: %d", testOptions->c2ssockport);
+ pair.port1 = testOptions->c2ssockport;
+ pair.port2 = -1;
+
+ log_println(
+ 1,
+ "listening for Inet connection on
testOptions->c2ssockfd, fd=%d",
+ testOptions->c2ssockfd);
+
+ log_println(
+ 1,
+ "Sending 'GO' signal, to tell client %d to head
for the next test",
+ testOptions->child0);
+ sprintf(buff, "%d", testOptions->c2ssockport);
+
+ // send TEST_PREPARE message with ephemeral port detail, indicating start of tests
+ if ((msgretvalue = send_msg(ctlsockfd, TEST_PREPARE, buff,
strlen(buff)))
+ < 0)
+ return msgretvalue;
+
+ // Wait on listening socket and read data once ready.
+ // Retry 5 times, waiting for activity on the socket
+ clilen = sizeof(cli_addr);
+ log_println(6, "child %d - sent c2s prepare to client",
+ testOptions->child0);
+ FD_ZERO(&rfd);
+ FD_SET(testOptions->c2ssockfd, &rfd);
+ sel_tv.tv_sec = 5;
+ sel_tv.tv_usec = 0;
+
+ for (j = 0; j < RETRY_COUNT; j++) {
+ msgretvalue = select((testOptions->c2ssockfd) + 1,
&rfd, NULL, NULL,
+ &sel_tv);
+ if ((msgretvalue == -1) && (errno == EINTR)) // socket interrupted. continue waiting for activity on socket
+ continue;
+ if (msgretvalue == 0) // timeout
+ return -SOCKET_CONNECT_TIMEOUT;
+ if (msgretvalue < 0) // other socket errors. exit
+ return -errno;
+ if (j == (RETRY_COUNT - 1)) // retry exceeded. exit
+ return -RETRY_EXCEEDED_WAITING_CONNECT;
+ recfd:
+
+ // If a valid connection request is received, client has connected. Proceed.
+ // Note the new socket fd - recvsfd- used in the
throughput test
+ recvsfd = accept(testOptions->c2ssockfd,
+ (struct sockaddr *) &cli_addr,
&clilen);
+ if (recvsfd > 0) {
+ log_println(6, "accept() for %d completed",
+ testOptions->child0);
+
+ // log protocol validation indicating client
accept
+ procstatusenum = PROCESS_STARTED;
+ proctypeenum = CONNECT_TYPE;
+ protolog_procstatus(testOptions->child0,
testids, proctypeenum,
+ procstatusenum, recvsfd);
+ break;
+ }
+ if ((recvsfd == -1) && (errno == EINTR)) { // socket interrupted, wait some more
+ log_println(
+ 6,
+ "Child %d interrupted while
waiting for accept() to complete",
+ testOptions->child0);
+ goto recfd;
+ }
+ log_println(
+ 6,
+ "------- C2S connection setup for %d
returned because (%d)",
+ testOptions->child0, errno);
+ if (recvsfd < 0) { // other socket errors, quit
+ return -errno;
+ }
+ if (j == (RETRY_COUNT - 1)) { // retry exceeded, quit
+ log_println(
+ 6,
+ "c2s child %d, uable to open
connection, return from test",
+ testOptions->child0);
+ return RETRY_EXCEEDED_WAITING_DATA;
+ }
+ }
+
+ // Get address associated with the throughput test. Used for packet tracing
+ log_println(6, "child %d - c2s ready for test with fd=%d",
+ testOptions->child0, recvsfd);
+
+ // commenting out below to move to init_pkttrace function
+ I2Addr src_addr = I2AddrByLocalSockFD(get_errhandle(),
recvsfd, 0);
+
+ // Get web100 connection. Used to collect web100 variable
statistics
+ conn = web100_connection_from_socket(agent, recvsfd);
+
+ // set up packet tracing. Collected data is used for bottleneck link calculations
+ if (getuid() == 0) {
+ /*
+ pipe(mon_pipe1);
+ log_println(0, "%s test calling pkt_trace_start() with pd=%d for device %s, addr %s",
+ currenttestdesc, clilen, device ,
src_addr);
+
+ start_packet_trace(recvsfd, testOptions->c2ssockfd,
&c2s_childpid,
+ mon_pipe1,
(struct sockaddr *) &cli_addr, clilen, device,
+ &pair,
currenttestdesc, options->compress, meta.c2s_ndttrace);
+ */
+
+ pipe(mon_pipe1);
+ if ((c2s_childpid = fork()) == 0) {
+ /* close(ctlsockfd); */
+ close(testOptions->c2ssockfd);
+ close(recvsfd);
+ log_println(
+ 5,
+ "C2S test Child %d thinks pipe()
returned fd0=%d, fd1=%d",
+ testOptions->child0,
mon_pipe1[0], mon_pipe1[1]);
+ log_println(2, "C2S test calling init_pkttrace() with pd=0x%x", (int) &cli_addr);
+ init_pkttrace(src_addr, (struct sockaddr *)
&cli_addr, clilen,
+ mon_pipe1, device, &pair, "c2s",
options->compress);
+ exit(0); /* Packet trace finished, terminate
gracefully */
+ }
+
+ // Get data collected from packet tracing into the C2S
"ndttrace" file
+ memset(tmpstr, 0, 256);
+ for (i = 0; i < 5; i++) {
+ msgretvalue = read(mon_pipe1[0], tmpstr, 128);
+ if ((msgretvalue == -1) && (errno == EINTR))
+ continue;
+ break;
+ }
+ if (strlen(tmpstr) > 5)
+ memcpy(meta.c2s_ndttrace, tmpstr,
strlen(tmpstr));
+ //name of nettrace file passed back from pcap child
+
+ log_println(3, "--tracefile after packet_trace %s",
+ meta.c2s_ndttrace);
+ }
+
+ log_println(5, "C2S test Parent thinks pipe() returned fd0=%d,
fd1=%d",
+ mon_pipe1[0], mon_pipe1[1]);
+
+ // experimental code, delete when finished
+ setCwndlimit(conn, group, agent, options);
+
+ // Create C->S snaplog directories, and perform some initialization based on options
+
+ create_client_logdir((struct sockaddr *) &cli_addr, clilen,
+ options->c2s_logname,
sizeof(options->c2s_logname), namesuffix,
+ sizeof(namesuffix));
+ sleep(2);
+
+ // send empty TEST_START indicating start of the test
+ send_msg(ctlsockfd, TEST_START, "", 0);
+ /* alarm(30); *//* reset alarm() again, this 10 sec test should finish before this signal
+ * is generated. */
+
+ // If snaplog recording is enabled, update meta file to
indicate the same
+ // and proceed to get snapshot and log it.
+ // This block is needed here since the meta file stores names without the full directory
+ // but fopen needs full path. Else, it could have gone into the "start_snap_worker" method
+ if (options->snaplog) {
+ memcpy(meta.c2s_snaplog, namesuffix,
strlen(namesuffix));
+ /*start_snap_worker(&snapArgs, agent, options->snaplog,
&workerLoop,
+ &workerThreadId, meta.c2s_snaplog,
options->c2s_logname,
+ conn, group); */
+ }
+ start_snap_worker(&snapArgs, agent, options->snaplog,
&workerThreadId,
+ meta.c2s_snaplog,
options->c2s_logname, conn, group);
+ // Wait on listening socket and read data once ready.
+ tmptime = secs();
+ sel_tv.tv_sec = 11; // time out after 11 seconds
+ sel_tv.tv_usec = 0;
+ FD_ZERO(&rfd);
+ FD_SET(recvsfd, &rfd);
+ for (;;) {
+ msgretvalue = select(recvsfd + 1, &rfd, NULL, NULL,
&sel_tv);
+ if ((msgretvalue == -1) && (errno == EINTR)) {
+ // socket interrupted. Continue waiting for
activity on socket
+ continue;
+ }
+ if (msgretvalue > 0) { // read from socket
+ tmpbytecount = read(recvsfd, buff,
sizeof(buff));
+ if ((tmpbytecount == -1) && (errno == EINTR)) // read interrupted,continue waiting
+ continue;
+ if (tmpbytecount == 0) // all data has been
read
+ break;
+ bytes_read += tmpbytecount; // data byte
count has to be increased
+ continue;
+ }
+ break;
+ }
+
+ tmptime = secs() - tmptime;
+ // throughput in kilo bits per sec = (transmitted_byte_count * 8) / (time_duration)*(1000)
+ *c2sspd = (8.e-3 * bytes_read) / tmptime;
+
+ // c->s throuput value calculated and assigned ! Release resources, conclude snap writing.
+ stop_snap_worker(&workerThreadId, options->snaplog,
&snapArgs);
+
+ // send the server calculated value of C->S throughput as result to client
+ sprintf(buff, "%6.0f kbps outbound for child %d", *c2sspd,
+ testOptions->child0);
+ log_println(1, "%s", buff);
+ sprintf(buff, "%0.0f", *c2sspd);
+ send_msg(ctlsockfd, TEST_MSG, buff, strlen(buff));
+
+ // get receiver side Web100 stats and write them to the log file. close sockets
+ if (record_reverse == 1)
+ web100_get_data_recv(recvsfd, agent, conn,
count_vars);
+
+ close(recvsfd);
+ close(testOptions->c2ssockfd);
+
+ // Next, send speed-chk a flag to retrieve the data it
collected.
+ // Skip this step if speed-chk isn't running.
+
+ if (getuid() == 0) {
+ log_println(1, "Signal USR1(%d) sent to child [%d]",
SIGUSR1,
+ c2s_childpid);
+ testOptions->child1 = c2s_childpid;
+ kill(c2s_childpid, SIGUSR1);
+ FD_ZERO(&rfd);
+ FD_SET(mon_pipe1[0], &rfd);
+ sel_tv.tv_sec = 1;
+ sel_tv.tv_usec = 100000;
+ i = 0;
+
+ for (;;) {
+ msgretvalue = select(mon_pipe1[0] + 1, &rfd,
NULL, NULL,
+ &sel_tv);
+ if ((msgretvalue == -1) && (errno == EINTR))
+ continue;
+ if (((msgretvalue == -1) && (errno != EINTR))
+ || (msgretvalue == 0)) {
+ log_println(
+ 4,
+ "Failed to read pkt-pair
data from C2S flow, retcode=%d, reason=%d",
+ msgretvalue, errno);
+ sprintf(
+ spds[(*spd_index)++],
+ " -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 -1 -1 0.0 0 0 0 0 0 -1");
+ sprintf(
+ spds[(*spd_index)++],
+ " -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 -1 -1 0.0 0 0 0 0 0 -1");
+ break;
+ }
+ /* There is something to read, so get it from the pktpair child. If an interrupt occurs,
+ * just skip the read and go on
+ * RAC 2/8/10
+ */
+ if (msgretvalue > 0) {
+ if ((msgretvalue = read(mon_pipe1[0],
spds[*spd_index], 128))
+ < 0)
+ sprintf(
+
spds[*spd_index],
+ " -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 -1 0.0 0 0 0 0 0 -1");
+ log_println(1, "%d bytes read '%s' from
C2S monitor pipe",
+ msgretvalue,
spds[*spd_index]);
+ (*spd_index)++;
+ if (i++ == 1)
+ break;
+ sel_tv.tv_sec = 1;
+ sel_tv.tv_usec = 100000;
+ continue;
+ }
+
+ }
+ }
+
+ // An empty TEST_FINALIZE message is sent to conclude the test
+ send_msg(ctlsockfd, TEST_FINALIZE, "", 0);
+
+ // Close opened resources for packet capture
+ if (getuid() == 0) {
+ stop_packet_trace(mon_pipe1);
+ }
+
+ // log end of C->S test
+ log_println(1, " <----------- %d -------------->",
testOptions->child0);
+ //protocol logs
+ teststatuses = TEST_ENDED;
+ protolog_status(testOptions->child0, testids, teststatuses,
ctlsockfd);
+
+ //set current test status and free address
+ setCurrentTest(TEST_NONE);
+
+ }
+
+ return 0;
+}
=======================================
--- /dev/null
+++ /trunk/src/test_mid_srv.c Mon Apr 30 13:46:39 2012
@@ -0,0 +1,301 @@
+/**
+ * This file contains methods to perform the middlebox test.
+ * The middlebox test is a brief throughput test from the Server to the Client
+ * with a limited CWND to check for a duplex mismatch condition.
+ * This test also uses a pre-defined MSS value to check if any intermediate node
+ * is modifying connection settings.
+ *
+ * Created on: Oct 18, 2011
+ * Author: kkumar
+ */
+
+#include <syslog.h>
+#include <pthread.h>
+#include <sys/times.h>
+#include <assert.h>
+
+#include "tests_srv.h"
+#include "strlutils.h"
+#include "ndtptestconstants.h"
+#include "utils.h"
+#include "testoptions.h"
+#include "runningtest.h"
+#include "logging.h"
+#include "protocol.h"
+#include "network.h"
+#include "mrange.h"
+
+/**
+ * Perform the Middlebox test.
+ *
+ * @param ctlsockfd Client control socket descriptor
+ * @param agent Web100 agent used to track the connection
+ * @param options Test options
+ * @param s2c_throughput_mid In-out parameter for S2C throughput results (evaluated by the MID TEST),
+ * @param conn_options Connection options
+ * @return 0 - success,
+ * >0 - error code.
+ * Error codes:
+ * -1 - Listener socket creation failed
+ * -3 - web100 connection data not obtained
+ * -100 - timeout while waiting for client to connect to serverÕs ephemeral port
+ * -errno- Other specific socket error numbers
+ * -101 - Retries exceeded while waiting for
client to connect
+ * -102 - Retries exceeded while waiting for
data from connected client
+ * Other used return codes:
+ * 1 - Message reception errors/inconsistencies
+ * 2 - Unexpected message type received/no message received due to timeout
+ * 3 Ð Received message is invalid
+ *
+ */
+
+int test_mid(int ctlsockfd, web100_agent* agent, TestOptions* options,
+ int conn_options, double* s2c_throughput_mid) {
+ int maxseg = ETHERNET_MTU_SIZE;
+ /* int maxseg=1456, largewin=16*1024*1024; */
+ /* int seg_size, win_size; */
+ int midsfd; // socket file-descriptor, used in mid-box throughput test from S->C
+ int j; // temporary integer store
+ int msgretvalue; // return value from socket read/writes
+ struct sockaddr_storage cli_addr;
+ /* socklen_t optlen, clilen; */
+ socklen_t clilen;
+ char buff[BUFFSIZE + 1]; // buf used for message payload
+I2Addr midsrv_addr = NULL; // server address
+ char listenmidport[10]; // listener socket for middlebox tests
+ int msgType;
+ int msgLen;
+ web100_connection* conn;
+ char tmpstr[256]; // temporary string storage
+ struct timeval sel_tv; // time
+ fd_set rfd; // receiver file descriptor
+
+ // variables used for protocol validation logging
+ enum TEST_ID thistestId = NONE;
+ enum TEST_STATUS_INT teststatusnow = TEST_NOT_STARTED;
+ enum PROCESS_STATUS_INT procstatusenum = PROCESS_STARTED;
+ enum PROCESS_TYPE_INT proctypeenum = CONNECT_TYPE;
+
+ assert(ctlsockfd != -1);
+ assert(agent);
+ assert(options);
+ assert(s2c_throughput_mid);
+
+ if (options->midopt) { // middlebox tests need to be run.
+
+ // Start with readying up (initializing)
+ setCurrentTest(TEST_MID);
+ log_println(1, " <-- %d - Middlebox test -->",
options->child0);
+
+ // protocol validation logs indicating start of tests
+ printf(" <--- %d - Middlebox test --->", options->child0);
+ thistestId = MIDDLEBOX;
+ teststatusnow = TEST_STARTED;
+ protolog_status(options->child0, thistestId, teststatusnow,
ctlsockfd);
+
+ // determine port to be used. Compute based on options set
earlier
+ // by reading from config file, or use default port3 (3003),
+ //strcpy(listenmidport, PORT3);
+ strlcpy(listenmidport, PORT3, sizeof(listenmidport));
+
+ if (options->midsockport) {
+ sprintf(listenmidport, "%d", options->midsockport);
+ } else if (options->mainport) {
+ sprintf(listenmidport, "%d", options->mainport + 2);
+ }
+
+ if (options->multiple) {
+ //strcpy(listenmidport, "0");
+ strlcpy(listenmidport, "0", sizeof(listenmidport));
+ }
+
+ /* RAC debug */
+ /*
+ if (KillHung() == 0)
+ log_println(5, "KillHung() returned 0, should have tried to kill off some LastAck process");
+ else
+ log_println(5, "KillHung(): returned non-0 response, nothing to kill or kill failed");
+ */
+
+ while (midsrv_addr == NULL) {
+
+ // attempt to bind to a new port and obtain address structure with details of listening port
+
+ midsrv_addr =
+ CreateListenSocket(
+ NULL,
+ (options->multiple ?
+
mrange_next(listenmidport) : listenmidport), conn_options, 0)
+ ;
+ if (midsrv_addr == NULL) {
+ /*
+ log_println(5, " Calling KillHung() because midsrv_address failed to bind");
+ if (KillHung() == 0)
+ continue;
+ */
+ }
+ if (strcmp(listenmidport, "0") == 0) {
+ log_println(0, "WARNING: ephemeral port number was
bound");
+ break;
+ }
+ if (options->multiple == 0) { // simultaneous tests from multiple clients not allowed, quit now
+ break;
+ }
+ }
+
+ if (midsrv_addr == NULL) {
+ log_println(0,
+ "Server (Middlebox test):
CreateListenSocket failed: %s",
+ strerror(errno));
+ sprintf(buff,
+ "Server (Middlebox test):
CreateListenSocket failed: %s",
+ strerror(errno));
+ send_msg(ctlsockfd, MSG_ERROR, buff, strlen(buff));
+ return -1;
+ }
+
+ // get socket FD and the ephemeral port number that client will connect to
+ options->midsockfd = I2AddrFD(midsrv_addr);
+ options->midsockport = I2AddrPort(midsrv_addr);
+ log_println(1, " -- port: %d", options->midsockport);
+
+ // send this port number to client
+ sprintf(buff, "%d", options->midsockport);
+ if ((msgretvalue = send_msg(ctlsockfd, TEST_PREPARE, buff,
strlen(buff)))
+ < 0)
+ return msgretvalue;
+
+ /* set mss to 1456 (strange value), and large snd/rcv buffers
+ * should check to see if server supports window scale ?
+ */
+ setsockopt(options->midsockfd, SOL_TCP, TCP_MAXSEG, &maxseg,
+ sizeof(maxseg));
+
+ /* Post a listen on port 3003. Client will connect here to
run the
+ * middlebox test. At this time it really only checks the
MSS value
+ * and does NAT detection. More analysis functions (window
scale)
+ * will be done in the future.
+ */
+ clilen = sizeof(cli_addr);
+
+ // Wait on listening socket and read data once ready.
+ // Choose a retry count of "5" to wait for activity on the
socket
+ FD_ZERO(&rfd);
+ FD_SET(options->midsockfd, &rfd);
+ sel_tv.tv_sec = 5;
+ sel_tv.tv_usec = 0;
+ for (j = 0; j < RETRY_COUNT; j++) {
+ msgretvalue = select((options->midsockfd) + 1, &rfd,
NULL, NULL,
+ &sel_tv);
+ if ((msgretvalue == -1) && (errno == EINTR)) // socket interruption. continue waiting for activity on socket
+ continue;
+ if (msgretvalue == 0) // timeout
+ return SOCKET_CONNECT_TIMEOUT;
+ if (msgretvalue < 0) // other socket errors, exit
+ return -errno;
+ if (j == 4) // retry exceeded. Quit
+ return RETRY_EXCEEDED_WAITING_CONNECT;
+
+ midfd:
+ // if a valid connection request is received, client has connected. Proceed.
+ // Note the new socket fd used in the throughput test
is this (midsfd)
+ if ((midsfd = accept(options->midsockfd,
+ (struct sockaddr *) &cli_addr, &clilen))
> 0) {
+ // log protocol validation indicating client
connection
+ procstatusenum = PROCESS_STARTED;
+ proctypeenum = CONNECT_TYPE;
+ protolog_procstatus(options->child0,
thistestId, proctypeenum,
+ procstatusenum, midsfd);
+ break;
+ }
+
+ if ((midsfd == -1) && (errno == EINTR)) // socket interrupted, wait some more
+ goto midfd;
+
+ sprintf(
+ tmpstr,
+ "------- middlebox connection setup
returned because (%d)",
+ errno);
+ if (get_debuglvl() > 1)
+ perror(tmpstr);
+ if (midsfd < 0)
+ return -errno;
+ if (j == 4)
+ return RETRY_EXCEEDED_WAITING_DATA;
+ }
+
+ // get meta test details copied into results
+ memcpy(&meta.c_addr, &cli_addr, clilen);
+ /* meta.c_addr = cli_addr; */
+ meta.family = ((struct sockaddr *) &cli_addr)->sa_family;
+
+ buff[0] = '\0';
+ // get web100 connection data
+ if ((conn = web100_connection_from_socket(agent, midsfd)) ==
NULL) {
+ log_println(
+ 0,
+ "!!!!!!!!!!! test_mid() failed to get
web100 connection data, rc=%d",
+ errno);
+ /* exit(-1); */
+ return -3;
+ }
+
+ // Perform S->C throughput test. Obtained results in "buff"
+ web100_middlebox(midsfd, agent, conn, buff);
+
+ // Transmit results in the form of a TEST_MSG message
+ send_msg(ctlsockfd, TEST_MSG, buff, strlen(buff));
+
+ // Expect client to send throughput as calculated at its end
+
+ msgLen = sizeof(buff);
+ if (recv_msg(ctlsockfd, &msgType, buff, &msgLen)) { // message reception error
+ log_println(0, "Protocol error!");
+ sprintf(
+ buff,
+ "Server (Middlebox test): Invalid CWND
limited throughput received");
+ send_msg(ctlsockfd, MSG_ERROR, buff, strlen(buff));
+ return 1;
+ }
+ if (check_msg_type("Middlebox test", TEST_MSG, msgType, buff, msgLen)) { // only TEST_MSG type valid
+ sprintf(
+ buff,
+ "Server (Middlebox test): Invalid CWND
limited throughput received");
+ send_msg(ctlsockfd, MSG_ERROR, buff, strlen(buff));
+ return 2;
+ }
+ if (msgLen <= 0) { // received message's length has to be a
valid one
+ log_println(0, "Improper message");
+ sprintf(
+ buff,
+ "Server (Middlebox test): Invalid CWND
limited throughput received");
+ send_msg(ctlsockfd, MSG_ERROR, buff, strlen(buff));
+ return 3;
+ }
+
+ // message payload from client == midbox S->c throughput
+ buff[msgLen] = 0;
+ *s2c_throughput_mid = atof(buff);
+ log_println(4, "CWND limited throughput = %0.0f kbps (%s)",
+ *s2c_throughput_mid, buff);
+
+ // finalize the midbox test ; disabling socket used for throughput test and closing out both sockets
+ shutdown(midsfd, SHUT_WR);
+ close(midsfd);
+ close(options->midsockfd);
+ send_msg(ctlsockfd, TEST_FINALIZE, "", 0);
+ log_println(1, " <--------- %d ----------->",
options->child0);
+
+ printf(" <--- %d - Middlebox test --->", options->child0);
+
+ // log end of test into protocol doc, just to delimit.
+ teststatusnow = TEST_ENDED;
+ //protolog_status(1, options->child0, thistestId,
teststatusnow);
+ protolog_status(options->child0, thistestId,
teststatusnow,ctlsockfd);
+
+ setCurrentTest(TEST_NONE);
+ /* I2AddrFree(midsrv_addr); */
+ }
+ /* I2AddrFree(midsrv_addr); */
+ return 0;
+}
=======================================
--- /dev/null
+++ /trunk/src/test_results_clt.c Mon Apr 30 13:46:39 2012
@@ -0,0 +1,480 @@
+/**
+ * This file contains methods to interpret the results sent to the CLT from the server.
+ *
+ * Created on: Oct 19, 2011
+ * Author:

+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+
+#include "logging.h"
+#include "utils.h"
+#include "clt_tests.h"
+#include "test_results_clt.h"
+
+#ifndef VIEW_DIFF
+#define VIEW_DIFF 0.1
+#endif
+
+/** Get link speed based on data sent from server.
+ * This data is an integral value from among a set indicative of link speeds.
+ * @param c2s_linkspeed_ind
+ * @return Current link's speed
+ */
+double get_linkspeed(int c2s_linkspeed_ind, int half_duplex_ind) {
+ double mylinkspeed = 0;
+ if (c2s_linkspeed_ind < DATA_RATE_ETHERNET) {
+ if (c2s_linkspeed_ind < DATA_RATE_RTT) {
+ printf("Server unable to determine bottleneck link
type.\n");
+ } else {
+ printf("Your host is connected to a ");
+
+ if (c2s_linkspeed_ind == DATA_RATE_DIAL_UP) {
+ printf("Dial-up Modem\n");
+ mylinkspeed = .064;
+ } else {
+ printf("Cable/DSL modem\n");
+ mylinkspeed = 2;
+ }
+ }
+ } else {
+ printf("The slowest link in the end-to-end path is a ");
+
+ if (c2s_linkspeed_ind == DATA_RATE_ETHERNET) {
+ printf("10 Mbps Ethernet or WiFi 11b subnet\n");
+ mylinkspeed = 10;
+ } else if (c2s_linkspeed_ind == DATA_RATE_T3) {
+ printf("45 Mbps T3/DS3 or WiFi 11 a/g subnet\n");
+ mylinkspeed = 45;
+ } else if (c2s_linkspeed_ind == DATA_RATE_FAST_ETHERNET) {
+ printf("100 Mbps ");
+ mylinkspeed = 100;
+ if (half_duplex_ind == NO_HALF_DUPLEX) {
+ printf("Full duplex Fast Ethernet subnet\n");
+ } else {
+ printf("Half duplex Fast Ethernet subnet\n");
+ }
+ } else if (c2s_linkspeed_ind == DATA_RATE_OC_12) {
+ printf("a 622 Mbps OC-12 subnet\n");
+ mylinkspeed = 622;
+ } else if (c2s_linkspeed_ind == DATA_RATE_GIGABIT_ETHERNET) {
+ printf("1.0 Gbps Gigabit Ethernet subnet\n");
+ mylinkspeed = 1000;
+ } else if (c2s_linkspeed_ind == DATA_RATE_OC_48) {
+ printf("2.4 Gbps OC-48 subnet\n");
+ mylinkspeed = 2400;
+ } else if (c2s_linkspeed_ind == DATA_RATE_10G_ETHERNET) {
+ printf("10 Gbps 10 Gigabit Ethernet/OC-192 subnet\n");
+ mylinkspeed = 10000;
+ }
+ }
+ return mylinkspeed;
+}
+
+/**
+ * Print results of the mismatch detection
+ * @param mismatch Integer indicating results
+ */
+void print_results_mismatchcheck(int mismatch) {
+ switch (mismatch) {
+ case DUPLEX_OLD_ALGO_INDICATOR :
+ printf("Warning: Old Duplex-Mismatch condition detected.\n");
+ break;
+
+ case DUPLEX_SWITCH_FULL_HOST_HALF :
+ printf("Alarm: Duplex Mismatch condition detected. Switch=Full and Host=Half\n");
+ break;
+ case DUPLEX_SWITCH_FULL_HOST_HALF_POSS:
+ printf(
+ "Alarm: Possible Duplex Mismatch condition detected. Switch=Full and Host=Half\n");
+ break;
+ case DUPLEX_SWITCH_HALF_HOST_FULL:
+ printf(
+ "Alarm: Duplex Mismatch condition detected. Switch=Half and Host=Full\n");
+ break;
+ case DUPLEX_SWITCH_HALF_HOST_FULL_POSS:
+ printf(
+ "Alarm: Possible Duplex Mismatch condition detected. Switch=Half and Host=Full\n");
+ break;
+ case DUPLEX_SWITCH_HALF_HOST_FULL_WARN:
+ printf(
+ "Warning: Possible Duplex Mismatch condition detected. Switch=Half and Host=Full\n");
+ break;
+ }
+}
+
+
+/**
+ * Calculate and display recommended buffer sizes based on
+ * receive window size, the max Receive window advertisement
+ * received, link speed and round trip time.
+ * @param rwin
+ * @param rttsec
+ * @param avgrtt
+ * @param mylink
+ * @param max_RwinRcvd
+ */
+void print_recommend_buffersize(double rwin, double rttsec, double avgrtt,
+ double mylink, int max_RwinRcvd){
+ int j = 0;
+ log_print(3, "Is larger buffer recommended? rwin*2/rttsec (%0.4f) < mylink (%0.4f) ",
+ ((rwin*2)/rttsec), mylink);
+ log_println(3, "AND j (%0.4f) > MaxRwinRcvd (%d)",
+ (float)((mylink * avgrtt)*1000)/8, max_RwinRcvd);
+ if (((rwin*2)/rttsec) < mylink) {
+ j = (float)((mylink * avgrtt)*1000) / 8;
+ if ((int)j > max_RwinRcvd) {
+ printf("Information: The receive buffer should be %0.0f
", j/1024);
+ printf("kbytes to maximize throughput\n");
+ }
+ }
+}
+
+/**
+ * Check if faulty hardware was detected, and print results
+ * @param is_badcable
+ * */
+void check_badcable(int is_bad_cable) {
+ if (is_bad_cable == POSSIBLE_BAD_CABLE) {
+ printf("Alarm: Excessive errors, check network cable(s).\n");
+ }
+}
+
+/**
+ * Check if congestion was detected, and print results
+ * @param is_congested
+ * */
+void check_congestion(int is_congested) {
+ if (is_congested == POSSIBLE_CONGESTION) {
+ printf("Information: Other network traffic is congesting the link\n");
+ }
+}
+
+/**
+ * Check if packet queuing is a problem at the C->S end.
+ * @param c2sthruput The C->S throughput as calculated by the server in the C->S test
+ * @param spdout C->S throughput as calculated by the Client during the C->S test
+ * @param sndqueue length of send queue of the C->S throughput test
+ */
+void check_C2Spacketqueuing(double c2sthruput, double spdout, int sndqueue, int pktcount, int buflength) {
+ if (c2sthruput < (spdout * (1.0 - VIEW_DIFF))) {
+ printf("Information [C2S]: Packet queuing detected: %0.2f%% ",
+ 100 * (spdout - c2sthruput) / spdout);
+ if (sndqueue > (0.8 * pktcount * buflength * (spdout - c2sthruput) / spdout)) {
+ printf("(local buffers)\n");
+ } else {
+ printf("(remote buffers)\n");
+ }
+ }
+}
+
+
+/**
+ * Deduce if packet queuing is a problem at the S->C end from values collected
+ * during the S2C tests.
+ * @param s2cthroughput The S->C throughput as calculated by the client
+ * @param spdin S->C throughput as calculated by the Client during the C->S test
+ * @param sndqueue length of send queue of the S->C throughput test
+ * @param sbytecount total-sent-byte-count in the S->C throughput test
+ */
+void check_S2Cpacketqueuing(double s2cthroughput, double spdin, int srvsndqueue, int sbytecount) {
+ if (spdin < (s2cthroughput * (1.0 - VIEW_DIFF))) {
+ printf("Information [S2C]: Packet queuing detected: %0.2f%% ",
+ 100 * (s2cthroughput - spdin) /
s2cthroughput);
+ if (srvsndqueue > (0.8 * sbytecount * (s2cthroughput - spdin) / s2cthroughput)) {
+ printf("(local buffers)\n");
+ } else {
+ printf("(remote buffers)\n");
+ }
+ }
+}
+
+/**
+ * Print suggestions based on packet loss/retransmissions details obtained
+ *
+ * If there were packets retransmitted, print details about :
+ * - whether packets arrived out of order
+ * -# of times the retransmit timeout expired
+ * -total time spent waiting
+ *
+ * If there were no packet retransmissions, but duplicate
+ * acknowledgments were received, print details about:
+ * - whether packets arrived out of order
+ *
+ * @param PktsRetrans Number of packet retransmissions
+ * @param DupAcksIn Number of incoming duplicate acknowledgments
+ * @param SACKsRcvd number of SACK options
+ * @param ooorder out-of-order packets
+ * @param Timeouts number of times retransmit timer expired
+ * @param waitsec total idle time
+ * @param totaltesttime Total test time
+ */
+void print_packetloss_statistics(int PktsRetrans, int DupAcksIn, int SACKsRcvd,
+ double ooorder, int Timeouts, double waitsec , double
totaltesttime) {
+
+ if (PktsRetrans > 0) {
+ printf("There were %d packets retransmitted", PktsRetrans);
+ printf(", %d duplicate acks received", DupAcksIn);
+ printf(", and %d SACK blocks received\n", SACKsRcvd);
+ if (ooorder > 0)
+ printf("Packets arrived out-of-order %0.2f%% of the
time.\n",
+ ooorder * 100);
+ if (Timeouts > 0)
+ printf("The connection stalled %d times due to packet
loss.\n",
+ Timeouts);
+ if (waitsec > 0)
+ printf(
+ "The connection was idle %0.2f seconds
(%0.2f%%) of the time.\n",
+ waitsec, (100 * waitsec /
totaltesttime));
+ } else if (DupAcksIn > 0) {
+ printf("No packet loss - ");
+ if (ooorder > 0)
+ printf("but packets arrived out-of-order %0.2f%% of the
time.\n",
+ ooorder * 100);
+ else
+ printf("\n");
+ } else {
+ printf("No packet loss was observed.\n");
+ }
+
+}
+
+
+
+/**
+ * Print details about being receiver, sender or congestion window limited.
+ * @param rwintime time spent limited due to receive window limitations
+ * @param rwin receive window size
+ * @param sendtime time spent limited due to send window limitations
+ * @param swin send window size
+ * @param cwndtime time spent limited due to congestion window limitations
+ * @param rttsec round-trip time in sec
+ * @param mylinkspeed Link speed
+ * @param sndbuf send buffer size
+ * @param max_rwinrcvd MaxRwinRcvd value
+ */
+
+void print_limitedtime_ratio(double rwintime, double rwin, double sendtime, double swin, double cwndtime,
+ double rttsec, double mylinkspeed, int sndbuf, int
max_rwinrcvd) {
+
+ if (rwintime > .015) {
+ printf("This connection is receiver limited %0.2f%% of the
time.\n",
+ rwintime * 100);
+ if ((2 * (rwin / rttsec)) < mylinkspeed)
+ printf(
+ " Increasing the current receive buffer (%0.2f KB) will improve performance\n",
+ (float) max_rwinrcvd / KILO_BITS);
+ }
+ if (sendtime > .015) {
+ printf("This connection is sender limited %0.2f%% of the
time.\n",
+ sendtime * 100);
+ if ((2 * (swin / rttsec)) < mylinkspeed)
+ printf(
+ " Increasing the current send buffer (%0.2f KB) will improve performance\n",
+ (float) sndbuf / KILO_BITS);
+ }
+ if (cwndtime > .005) {
+ printf("This connection is network limited %0.2f%% of the
time.\n",
+ cwndtime * 100);
+ }
+
+}
+
+/**
+ * Check if excessive packet loss is affecting performance
+ * @param spd throughput indicator
+ * @param loss packet loss
+ */
+void print_packetloss_excess(double spd, double loss) {
+ if ((spd < 4) && (loss > .01)) {
+ printf(
+ "Excessive packet loss is impacting your
performance, check the ");
+ printf("auto-negotiate function on your local PC and network
switch\n");
+ }
+}
+
+/**
+ * Print if TCP Selective Acknowledgment Options based on RFC 2018 is on
+ *
+ * @param SACKEnabled
+ */
+void print_SAck_RFC2018(int SACKEnabled) {
+ printf("RFC 2018 Selective Acknowledgment: ");
+ if (SACKEnabled == 0)
+ printf("OFF\n");
+ else
+ printf("ON\n");
+}
+
+/**
+ * Print if Nagle algorithm (rfc 896) is on
+ * @param is_nagleenabled
+ */
+
+void print_Nagle_RFC896(int is_nagleenabled)
+{
+ printf("RFC 896 Nagle Algorithm: ");
+ if (is_nagleenabled == 0)
+ printf("OFF\n");
+ else
+ printf("ON\n");
+}
+
+/**
+ * Print if Explicit congestion notification to IP is on - RFC 3168 related
+ * @param is_ECNenabled
+ */
+void print_congestion_RFC3168(int is_ECNenabled)
+{
+ printf("RFC 3168 Explicit Congestion Notification: ");
+ if (is_ECNenabled == 0)
+ printf("OFF\n");
+ else
+ printf("ON\n");
+
+}
+
+/**
+ * Print details of whether time stamping is on - RFC 1323 related.
+ *
+ * @param is_timestampenabled
+ */
+void print_timestamping_RFC1323(int is_timestampenabled)
+{
+ printf("RFC 1323 Time Stamping: ");
+ if (is_timestampenabled == 0)
+ printf("OFF\n");
+ else
+ printf("ON\n");
+}
+
+/**
+ * Print window scaling based data
+ * @param max_rwinrcvd MaxRwinRcvd web100 var value
+ * @param winscale_rcvd value of the received window scale option
+ * @param winscale_sent value of the transmitted window scale option
+ */
+void print_windowscaling(int max_rwinrcvd, int winscale_rcvd, int winscale_sent) {
+ printf("RFC 1323 Window Scaling: ");
+ if (max_rwinrcvd < 65535)
+ winscale_rcvd = 0;
+
+ if ((winscale_rcvd == 0) || (winscale_rcvd > 20))
+ printf("OFF\n");
+ else
+ printf("ON; Scaling Factors - Server=%d, Client=%d\n",
+ winscale_rcvd, winscale_sent);
+}
+
+/**
+ * Print details of throughput limits(thresholds) imposed by
+ * the send, receive or congestion window values
+ * @param max_rwinrcvd MaxRwinRcvd web100 var value
+ * @param rcvwinscale Value of receive window scale
+ * @param sndbuf send buffer size
+ * @param rwin Receive window value in bytes
+ * @param swin Send window value in bytes
+ * @param cwin congestion window value in bytes
+ * @param rttsec total round-trip time
+ * @param estimate Estimated theoretical throughput
+ */
+void print_throughputlimits(int max_rwinrcvd, int rcvwinscale, int *sndbuf,
+ double s_win, double r_win, double c_win, double rttsec, double estimate) {
+ int tempsendbuf = *sndbuf;
+ if ((rcvwinscale == 0) && (tempsendbuf > 65535))
+ tempsendbuf = 65535;
+
+ printf("The theoretical network limit is %0.2f Mbps\n", estimate);
+
+ printf(
+ "The NDT server has a %0.0f KByte buffer which limits the throughput to %0.2f Mbps\n",
+ (float) tempsendbuf / KILO_BITS, (float) s_win /
rttsec);
+
+ printf(
+ "Your PC/Workstation has a %0.0f KByte buffer which limits the throughput to %0.2f Mbps\n",
+ (float) max_rwinrcvd / KILO_BITS, (float) r_win /
rttsec);
+
+ printf(
+ "The network based flow control limits the throughput to
%0.2f Mbps\n",
+ (float) c_win / rttsec);
+
+}
+
+
+/**
+ * Print details of link speed as seen by data and ack speed indicators
+ *
+ * @param isC2S_enabled Has C2S test been performed?
+ * @param c2s_linkspeed_data Data link speed as detected by server data
+ * @param c2s_linkspeed_ack Data link speed(type) as detected by server acknowledgments
+ * @param s2c_linkspeed_data Data link speed as detected by client data
+ * @param s2c_linkspeed_ack Data link speed as detected by client acknowledgments
+ */
+void print_linkspeed_dataacks(int isC2S_enabled, int c2s_linkspeed_data,
+ int c2s_linkspeed_ack, int s2c_linkspeed_data, int
s2c_linkspeed_ack) {
+ if (isC2S_enabled) {
+ printf(
+ "\nClient Data reports link is '%3d', Client Acks report link is '%3d'\n",
+ c2s_linkspeed_data, c2s_linkspeed_ack);
+ }
+ printf(
+ "Server Data reports link is '%3d', Server Acks report
link is '%3d'\n",
+ s2c_linkspeed_data, s2c_linkspeed_ack);
+
+}
+
+/**
+ * A Network Address Translation (NAT) box is detected by
+ * comparing the client/server IP addresses as seen from the server and the client boxes.
+ * @param ssip Server side IP address string
+ * @param csip Client side sersver IP address string
+ * @param scip Server side client IP address string
+ * @param ccip Client side client IP address string
+ */
+void check_NAT(char *ssip, char *csip, char *scip, char *ccip) {
+
+ // If server and client both see similar server IP addresses,
+ // no NAT happening
+ if (strcmp(ssip, csip) == 0)
+ printf("Server IP addresses are preserved End-to-End\n");
+ else {
+ printf("Information: Network Address Translation (NAT) box is
");
+ printf("modifying the Server's IP address\n");
+ printf("\tServer says [%s] but Client says [ %s]\n", ssip,
csip);
+ }
+
+ // If server and client both see similar client IP addresses,
+ // no NAT happening
+ if (strcmp(scip, ccip) == 0)
+ printf("Client IP addresses are preserved End-to-End\n");
+ else {
+ printf("Information: Network Address Translation (NAT) box is
");
+ printf("modifying the Client's IP address\n");
+ printf("\tServer says [%s] but Client says [ %s]\n", scip,
ccip);
+ }
+
+}
+
+/**
+ * Check packet size preservation by comparing the final value
+ * of the MSS variable in the Middlebox test.
+ *
+ * Note that the server sets the MSS value to 1456 on the listening socket
+ * before the NDT Client connects to it; the final value of the MSS
+ * variable is read after the NDT Client connects.
+ * @param is_timestampenabled
+ * @param mssvalue
+ */
+void check_MSS_modification(int is_timestampenabled, int *mssvalue) {
+ if (is_timestampenabled == 1)
+ *mssvalue += 12;
+ if (*mssvalue == 1456)
+ printf("Packet size is preserved End-to-End\n");
+ else
+ printf(
+ "Information: Network Middlebox is modifying MSS variable (changed to %d)\n",
+ *mssvalue);
+
+}
=======================================
--- /dev/null
+++ /trunk/src/test_results_clt.h Mon Apr 30 13:46:39 2012
@@ -0,0 +1,82 @@
+/*
+ * test_results_clt.h
+ *
+ * Created on: Oct 19, 2011
+ * Author: kkumar
+ */
+
+#ifndef TEST_RESULTS_CLT_H_
+#define TEST_RESULTS_CLT_H_
+
+// determine linkspeed based on link speed indicator
+double get_linkspeed(int c2s_linkspeed_ind, int half_duplex_ind);
+
+// Check if faulty hardware was detected
+void check_badcable(int is_bad_able);
+
+// Check if congestion was detected, and print results
+void check_congestion(int is_congested);
+
+// Print results of the mismatch detection
+void print_results_mismatchcheck(int mismatch);
+
+// Calculate and display recommended buffer sizes
+void print_recommend_buffersize(double rwin, double rttsec, double avgrtt,
+ double mylink, int max_RwinRcvd);
+
+// Check if faulty hardware was detected, and print results
+void check_badcable(int is_bad_cable);
+
+// Check if congestion was detected, and print results
+void check_congestion(int is_congested);
+
+// Check if packet queuing is a problem at the C->S end.
+void check_C2Spacketqueuing(double c2sthruput, double spdout, int sndqueue, int pktcount, int buflength);
+
+// Deduce if packet queuing is a problem at the S->C end from values collected
+// .. during the S2C tests.
+void check_S2Cpacketqueuing(double s2cthroughput, double spdin, int srvsndqueue, int sbytecount);
+
+// Print suggestions based on packet loss/retransmissions details obtained
+void print_packetloss_statistics(int PktsRetrans, int DupAcksIn, int SACKsRcvd,
+ double ooorder, int Timeouts, double waitsec , double
totaltesttime);
+
+// Print details about being receiver, sender or congestion window limited.
+void print_limitedtime_ratio(double rwintime, double rwin, double sendtime, double swin, double cwndtime,
+ double rttsec, double mylinkspeed, int sndbuf, int
max_rwinrcvd) ;
+
+// Check if excessive packet loss is affecting performance
+void print_packetloss_excess(double spd, double loss);
+
+// Print if TCP Selective Acknowledgment Options based on RFC 2018 is on
+void print_SAck_RFC2018(int SACKEnabled);
+
+// Print if Nagle algorithm (rfc 896) is on
+void print_Nagle_RFC896(int is_nagleenabled);
+
+// Print if Explicit congestion notification to IP is on - RFC 3168 related
+void print_congestion_RFC3168(int is_ECNenabled);
+
+// Print details of whether time stamping is on - RFC 1323 based.
+void print_timestamping_RFC1323(int is_timestampenabled);
+
+// Print window scaling based data
+void print_windowscaling(int MaxRwinRcvd, int WinScaleRcvd, int WinScaleSent);
+
+//Print details of throughput limits(thresholds) imposed by
+// the send, receive or congestion window values
+void print_throughputlimits(int max_rwinrcvd, int RcvWinScale,
+ int *sndbuf, double s_win, double r_win, double c_win, double
rttsec,
+ double estimate);
+
+// Print details of link speed as seen by data and ack speed indicators
+void print_linkspeed_dataacks(int isC2S_enabled, int c2s_linkspeed_data,
+ int c2s_linkspeed_ack, int s2c_linkspeed_data, int
s2c_linkspeed_ack) ;
+
+// Check if a Network Address translation box is modifying IP addresses
+// of server or client
+void check_NAT(char *ssip, char *csip, char *scip, char *ccip);
+
+// Check packet size preservation
+void check_MSS_modification(int is_timestampenabled, int *mssvalue);
+#endif /* TEST_RESULTS_CLT_H_ */
=======================================
--- /dev/null
+++ /trunk/src/test_s2c_srv.c Mon Apr 30 13:46:39 2012
@@ -0,0 +1,588 @@
+/**
+ * File contains tests to perform the S2C Throughput test.
+ * This throughput test tests the achievable network bandwidth from
+ * the Server to the Client by performing a 10 seconds
+ * memory-to-memory data transfer.
+ *
+ * Created : Oct 17, 2011
+ * Author:

+ */
+#include <syslog.h>
+#include <pthread.h>
+#include <sys/times.h>
+#include "tests_srv.h"
+#include "strlutils.h"
+#include "ndtptestconstants.h"
+#include "utils.h"
+#include "testoptions.h"
+#include "runningtest.h"
+#include "logging.h"
+#include "protocol.h"
+#include "network.h"
+#include "mrange.h"
+
+extern pthread_mutex_t mainmutex;
+extern pthread_cond_t maincond;
+
+int mon_pipe2[2]; // used to store file descriptors of pipes created for ndttrace for C2S tests
+
+/**
+ * Perform the S2C Throughput test. This throughput test tests the achievable
+ * network bandwidth from the Server to the Client by performing a 10 seconds
+ * memory-to-memory data transfer.
+ *
+ * The Server also collects web100 data variables, that are sent to the Client
+ * at the end of the test session.
+ *
+ * Protocol messages exchanged between the Client and Server
+ * are sent using the same connection and message format as the NDTP-Control protocol.
+ * The throughput packets are sent on the new connection, though, and do not
+ * follow the NDTP-Control protocol message format.
+ *
+ * @param ctlsockfd - the client control socket descriptor
+ * @param agent - the Web100 agent used to track the connection
+ * @param testOptions - the test options
+ * @param conn_options - the connection options
+ * @param testOptions Test options
+ * @param s2cspd In-out parameter to store C2S throughput value
+ * @param set_buff enable setting TCP send/recv buffer size to be used (seems unused in file)
+ * @param window value of TCP send/rcv buffer size intended to be used.
+ * @param autotune autotuning option. Deprecated.
+ * @param device string devine name inout parameter
+ * @param options Test Option variables
+ * @param spds[][] speed check array
+ * @param spd_index index used for speed check array
+ * @param count_vars count of web100 variables
+ * @param peaks Cwnd peaks structure pointer
+ *
+ * @return 0 - success,
+ * >0 - error code.
+ * Error codes:
+ * -1 - Message reception errors/inconsistencies in clientÕs final message, or Listener socket creation failed or cannot write message header information while attempting to send
+ * TEST_PREPARE message
+ * -2 - Cannot write message data while
attempting to send
+ * TEST_PREPARE message, or Unexpected message type
received
+ * -3 - Received message is invalid
+ * -100 - timeout while waiting for client to connect to serverÕs ephemeral port
+ * -101 - Retries exceeded while waiting for
client to connect
+ * -102 - Retries exceeded while waiting for data from connected client
+ * -errno - Other specific socket error numbers
+ */
+int test_s2c(int ctlsockfd, web100_agent* agent, TestOptions* testOptions,
+ int conn_options, double* s2cspd, int set_buff, int window,
+ int autotune, char* device, Options* options, char
spds[4][256],
+ int* spd_index, int count_vars, CwndPeaks* peaks) {
+
+ int ret; // ctrl protocol read/write return status
+ int j, k, n;
+ int xmitsfd; // transmit (i.e server) socket fd
+ pid_t s2c_childpid = 0; // s2c_childpid
+
+ char tmpstr[256]; // string array used for temp storage of many char*
+ struct sockaddr_storage cli_addr;
+
+ socklen_t clilen;
+ double bytes_written; // bytes written in the throughput test
+ double tx_duration; // total time for which data was txed
+ double tmptime; // temporary time store
+ double x2cspd; // s->c test throughput
+ struct timeval sel_tv; // time
+ fd_set rfd; // receive file descriptor
+ char buff[BUFFSIZE + 1]; // message payload buffer
+ int bufctrlattempts = 0; // number of buffer control attempts
+ int i; // temporary var used for iterators etc
+ PortPair pair; // socket ports
+ I2Addr s2csrv_addr = NULL;
+ I2Addr src_addr = NULL;
+ char listens2cport[10];
+ int msgType;
+ int msgLen;
+ int sndqueue;
+ struct sigaction new, old;
+
+ /* experimental code to capture and log multiple copies of the
+ * web100 variables using the web100_snap() & log() functions.
+ */
+ web100_snapshot* tsnap = NULL;
+ web100_snapshot* rsnap = NULL;
+ web100_group* group;
+ web100_group* tgroup;
+ web100_group* rgroup;
+ web100_connection* conn;
+ web100_var* var;
+ pthread_t workerThreadId;
+ int nextseqtosend = 0, lastunackedseq = 0;
+ int drainingqueuecount = 0, bufctlrnewdata = 0; // sent data attempt queue, Draining Queue.
+
+ // variables used for protocol validation logs
+ enum TEST_STATUS_INT teststatuses = TEST_NOT_STARTED;
+ enum TEST_ID testids = S2C;
+ enum PROCESS_STATUS_INT procstatusenum = UNKNOWN;
+ enum PROCESS_TYPE_INT proctypeenum = CONNECT_TYPE;
+ char snaplogsuffix[256] = "s2c_snaplog";
+
+ SnapArgs snapArgs;
+ snapArgs.snap = NULL;
+ snapArgs.log = NULL;
+ snapArgs.delay = options->snapDelay;
+ wait_sig = 0;
+
+ // Determine port to be used. Compute based on options set earlier
+ // by reading from config file, or use default port2 (3003)
+ if (testOptions->s2copt) {
+ setCurrentTest(TEST_S2C);
+ log_println(1, " <-- %d - S2C throughput test -->",
+ testOptions->child0);
+
+ //protocol logs
+ teststatuses = TEST_STARTED;
+ protolog_status(testOptions->child0, testids, teststatuses,
ctlsockfd);
+
+ strlcpy(listens2cport, PORT4, sizeof(listens2cport));
+
+ if (testOptions->s2csockport) {
+ sprintf(listens2cport, "%d",
testOptions->s2csockport);
+ } else if (testOptions->mainport) {
+ sprintf(listens2cport, "%d", testOptions->mainport +
2);
+ }
+
+ if (testOptions->multiple) {
+ strlcpy(listens2cport, "0", sizeof(listens2cport));
+ }
+
+ // attempt to bind to a new port and obtain address structure with details of listening port
+ while (s2csrv_addr == NULL) {
+ s2csrv_addr =
+ CreateListenSocket(
+ NULL,
+
(testOptions->multiple ?
+
mrange_next(listens2cport) : listens2cport), conn_options, 0)
+ ;
+ if (s2csrv_addr == NULL) {
+ /*
+ log_println(1, " Calling KillHung() because s2csrv_address failed to bind");
+ if (KillHung() == 0)
+ continue;
+ */
+ }
+ if (strcmp(listens2cport, "0") == 0) {
+ log_println(0, "WARNING: ephemeral port number was
bound");
+ break;
+ }
+ if (testOptions->multiple == 0) {
+ break;
+ }
+ }
+ if (s2csrv_addr == NULL) {
+ log_println(
+ 0,
+ "Server (S2C throughput test):
CreateListenSocket failed: %s",
+ strerror(errno));
+ sprintf(
+ buff,
+ "Server (S2C throughput test):
CreateListenSocket failed: %s",
+ strerror(errno));
+ send_msg(ctlsockfd, MSG_ERROR, buff, strlen(buff));
+ return -1;
+ }
+
+ // get socket FD and the ephemeral port number that client will connect to run tests
+ testOptions->s2csockfd = I2AddrFD(s2csrv_addr);
+ testOptions->s2csockport = I2AddrPort(s2csrv_addr);
+ log_println(1, " -- s2c %d port: %d", testOptions->child0,
+ testOptions->s2csockport);
+ pair.port1 = -1;
+ pair.port2 = testOptions->s2csockport;
+
+ // Data received from speed-chk. Send TEST_PREPARE "GO" signal with port number
+ sprintf(buff, "%d", testOptions->s2csockport);
+ j = send_msg(ctlsockfd, TEST_PREPARE, buff, strlen(buff));
+ if (j == -1) {
+ log_println(6, "S2C %d Error!, Test start message not
sent!",
+ testOptions->child0);
+ return j;
+ }
+ if (j == -2) { // could not write message data
+ log_println(6, "S2C %d Error!, server port [%s] not
sent!",
+ testOptions->child0, buff);
+ return j;
+ }
+
+ // ok, await for connect on 3rd port
+ // This is the second throughput test, with data streaming
from
+ // the server back to the client. Again stream data for 10
seconds.
+
+ log_println(1, "%d waiting for data on
testOptions->s2csockfd",
+ testOptions->child0);
+
+ clilen = sizeof(cli_addr);
+ FD_ZERO(&rfd);
+ FD_SET(testOptions->c2ssockfd, &rfd);
+ sel_tv.tv_sec = 5; // wait for 5 secs
+ sel_tv.tv_usec = 0;
+ for (j = 0; j < RETRY_COUNT; j++) {
+ ret = select((testOptions->s2csockfd) + 1, &rfd,
NULL, NULL,
+ &sel_tv);
+ if ((ret == -1) && (errno == EINTR))
+ continue;
+ if (ret == 0)
+ return SOCKET_CONNECT_TIMEOUT; // timeout
+ if (ret < 0)
+ return -errno; // other socket errors. exit
+ if (j == 4)
+ return RETRY_EXCEEDED_WAITING_CONNECT; //
retry exceeded. exit
+
+ // If a valid connection request is received, client has connected. Proceed.
+ // Note the new socket fd - xmitfd - used in the
throughput test
+ ximfd: xmitsfd = accept(testOptions->s2csockfd,
+ (struct sockaddr *) &cli_addr,
&clilen);
+ if (xmitsfd > 0) {
+ log_println(6, "accept() for %d completed",
+ testOptions->child0);
+ procstatusenum = PROCESS_STARTED;
+ proctypeenum = CONNECT_TYPE;
+ protolog_procstatus(testOptions->child0,
testids, proctypeenum,
+ procstatusenum, xmitsfd);
+ break;
+ }
+ if ((xmitsfd == -1) && (errno == EINTR)) { // socket interrupted, wait some more
+ log_println(
+ 6,
+ "Child %d interrupted while
waiting for accept() to complete",
+ testOptions->child0);
+ goto ximfd;
+ }
+ log_println(
+ 6,
+ "------- S2C connection setup for %d
returned because (%d)",
+ testOptions->child0, errno);
+ if (xmitsfd < 0) // other socket errors, quit
+ return -errno;
+ if (++j == 4) { // retry exceeded, quit
+ log_println(
+ 6,
+ "s2c child %d, unable to open
connection, return from test",
+ testOptions->child0);
+ return -102;
+ }
+ }
+ src_addr = I2AddrByLocalSockFD(get_errhandle(), xmitsfd, 0);
+ conn = web100_connection_from_socket(agent, xmitsfd);
+
+ // set up packet capture. The data collected is used for bottleneck link calculations
+ if (xmitsfd > 0) {
+ log_println(6, "S2C child %d, ready to fork()",
+ testOptions->child0);
+ if (getuid() == 0) {
+ /*
+ pipe(mon_pipe2);
+ start_packet_trace(xmitsfd,
testOptions->s2csockfd,
+ &s2c_childpid, mon_pipe2, (struct
sockaddr *) &cli_addr,
+ clilen, device, &pair, "s2c",
options->compress,
+ meta.s2c_ndttrace);
+ */
+ pipe(mon_pipe2);
+ if ((s2c_childpid = fork()) == 0) {
+ /* close(ctlsockfd); */
+ close(testOptions->s2csockfd);
+ close(xmitsfd);
+ log_println(
+ 5,
+ "S2C test Child thinks
pipe() returned fd0=%d, fd1=%d",
+ mon_pipe2[0],
mon_pipe2[1]);
+ /* log_println(2, "S2C test calling init_pkttrace() with pd=0x%x", (int) &cli_addr); */
+ init_pkttrace(src_addr, (struct sockaddr
*) &cli_addr,
+ clilen, mon_pipe2, device,
&pair, "s2c",
+ options->compress);
+ log_println(6,
+ "S2C test ended, why is
timer still running?");
+ exit(0); /* Packet trace finished,
terminate gracefully */
+ }
+ memset(tmpstr, 0, 256);
+ for (i = 0; i < 5; i++) { // read nettrace file name
into "tmpstr"
+ ret = read(mon_pipe2[0], tmpstr, 128);
+ if ((ret == -1) && (errno == EINTR)) // socket interrupted, try reading again
+ continue;
+ break;
+ }
+
+ if (strlen(tmpstr) > 5)
+ memcpy(meta.s2c_ndttrace, tmpstr,
strlen(tmpstr));
+ // name of nettrace file passed back from pcap child copied into meta structure
+
+ }
+
+ /* experimental code, delete when finished */
+ setCwndlimit(conn, group, agent, options);
+ /* End of test code */
+
+ // create directory to write web100 snaplog trace
+ create_client_logdir((struct sockaddr *) &cli_addr,
clilen,
+ options->s2c_logname,
sizeof(options->s2c_logname),
+ snaplogsuffix, sizeof(snaplogsuffix));
+
+ /* Kludge way of nuking Linux route cache. This
should be done
+ * using the sysctl interface.
+ */
+ if (getuid() == 0) {
+ // system("/sbin/sysctl -w
net.ipv4.route.flush=1");
+ system("echo 1 >
/proc/sys/net/ipv4/route/flush");
+ }
+ rgroup = web100_group_find(agent, "read");
+ rsnap = web100_snapshot_alloc(rgroup, conn);
+ tgroup = web100_group_find(agent, "tune");
+ tsnap = web100_snapshot_alloc(tgroup, conn);
+
+ // fill send buffer with random printable data for
throughput test
+ bytes_written = 0;
+ k = 0;
+ for (j = 0; j <= BUFFSIZE; j++) {
+ while (!isprint(k & 0x7f))
+ k++;
+ buff[j] = (k++ & 0x7f);
+ }
+
+ // Send message to client indicating TEST_START
+ if (send_msg(ctlsockfd, TEST_START, "", 0) < 0)
+ log_println(6,
+ "S2C test - Test-start message
failed for pid=%d",
+ s2c_childpid);
+ // ignore the alarm signal
+ memset(&new, 0, sizeof(new));
+ new.sa_handler = catch_s2c_alrm;
+ sigaction(SIGALRM, &new, &old);
+
+ // capture current values (i.e take snap shot) of
web_100 variables
+ // Write snap logs if option is enabled. update meta log to point to this snaplog
+
+ // If snaplog option is enabled, save snaplog details
in meta file
+ if (options->snaplog) {
+ memcpy(meta.s2c_snaplog, snaplogsuffix,
strlen(snaplogsuffix));
+ }
+ // get web100 snapshot and also log it based on
options
+ /*start_snap_worker(&snapArgs, agent, options->snaplog,
&workerLoop,
+ &workerThreadId, meta.s2c_snaplog,
options->s2c_logname,
+ conn, group);*///new file changes
+ start_snap_worker(&snapArgs, agent, options->snaplog,
+ &workerThreadId, meta.s2c_snaplog,
options->s2c_logname,
+ conn, group);
+
+ /* alarm(20); */
+ tmptime = secs(); // current time
+ tx_duration = tmptime + 10.0; // set timeout to 10 s
in future
+
+ log_println(6, "S2C child %d beginning test",
testOptions->child0);
+
+ while (secs() < tx_duration) {
+ bufctrlattempts++; // Increment total attempts at sending-> buffer control
+ if (options->avoidSndBlockUp) { // Do not
block send buffers
+ pthread_mutex_lock(&mainmutex);
+
+ // get details of next sequence # to be sent and fetch value from snap file
+ web100_agent_find_var_and_group(agent,
"SndNxt", &group,
+ &var);
+ web100_snap_read(var, snapArgs.snap,
tmpstr);
+ nextseqtosend = atoi(
+
web100_value_to_text(web100_get_var_type(var),
+
tmpstr));
+ // get oldest un-acked sequence number
+ web100_agent_find_var_and_group(agent,
"SndUna", &group,
+ &var);
+ web100_snap_read(var, snapArgs.snap,
tmpstr);
+ lastunackedseq = atoi(
+
web100_value_to_text(web100_get_var_type(var),
+
tmpstr));
+ pthread_mutex_unlock(&mainmutex);
+
+ // Temporarily stop sending data if you sense that the buffer is overwhelmed
+ // This is calculated by checking if
(8192 * 4) <
+ // ((Next Sequence Number To Be Sent) - (Oldest Unacknowledged Sequence Number) - 1)
+ // Increment draining queue value
+ if (is_buffer_clogged(nextseqtosend,
lastunackedseq)) {
+ drainingqueuecount++;
+ continue;
+ }
+ }
+
+ // attempt to write random data into the
client socket
+ n = write(xmitsfd, buff, RECLTH);
+ if ((n == -1) && (errno == EINTR)) // socket interrupted, continue attempting to write
+ continue;
+ if (n < 0)
+ break; // all data written. Exit
+ bytes_written += n;
+
+ if (options->avoidSndBlockUp) {
+ bufctlrnewdata++; // increment "sent
data" queue
+ }
+ } // Completed end of trying to transmit data for the
goodput test
+ /* alarm(10); */
+ sigaction(SIGALRM, &old, NULL);
+ sndqueue = sndq_len(xmitsfd);
+
+ // finalize the midbox test ; disabling socket used
for throughput test
+ log_println(6, "S2C child %d finished test",
testOptions->child0);
+ shutdown(xmitsfd, SHUT_WR); /* end of write's */
+
+ // get actual time duration during which data was
transmitted
+ tx_duration = secs() - tmptime;
+
+ // Throughput in kbps = (no of bits sent * 8) / (1000 * time data was sent)
+ x2cspd = (8.e-3 * bytes_written) / tx_duration;
+
+ // Release semaphore, and close snaplog file.
finalize other data
+ stop_snap_worker(&workerThreadId, options->snaplog,
&snapArgs);
+
+ // send the x2cspd to the client
+ memset(buff, 0, sizeof(buff));
+
+ // Send throughput, unsent byte count, total sent
byte count to client
+ sprintf(buff, "%0.0f %d %0.0f", x2cspd, sndqueue,
bytes_written);
+ if (send_msg(ctlsockfd, TEST_MSG, buff, strlen(buff))
< 0)
+ log_println(6,
+ "S2C test - failed to send test
message to pid=%d",
+ s2c_childpid);
+
+ web100_snap(rsnap);
+ web100_snap(tsnap);
+
+ log_println(1, "sent %d bytes to client in %0.2f
seconds",
+ (int) bytes_written, tx_duration);
+ log_println(
+ 1,
+ "Buffer control counters Total = %d, new data = %d, Draining Queue = %d",
+ bufctrlattempts, bufctlrnewdata,
drainingqueuecount);
+
+ /* Next send speed-chk a flag to retrieve the data it
collected.
+ * Skip this step if speed-chk isn't running.
+ */
+
+ if (getuid() == 0) {
+ log_println(1, "Signal USR2(%d) sent to child
[%d]", SIGUSR2,
+ s2c_childpid);
+ testOptions->child2 = s2c_childpid;
+ kill(s2c_childpid, SIGUSR2);
+ FD_ZERO(&rfd);
+ FD_SET(mon_pipe2[0], &rfd);
+ sel_tv.tv_sec = 1;
+ sel_tv.tv_usec = 100000;
+ i = 0;
+
+ for (;;) {
+ ret = select(mon_pipe2[0] + 1, &rfd,
NULL, NULL, &sel_tv);
+ if ((ret == -1) && (errno == EINTR)) {
+ log_println(
+ 6,
+ "Interrupt received while waiting for s2c select90 to finish, continuing");
+ continue;
+ }
+ if (((ret == -1) && (errno != EINTR))
|| (ret == 0)) {
+ log_println(
+ 4,
+ "Failed to read pkt-pair data from S2C flow, retcode=%d, reason=%d, EINTR=%d",
+ ret, errno,
EINTR);
+ sprintf(
+
spds[(*spd_index)++],
+ " -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 -1 0.0 0 0 0 0 0 -1");
+ sprintf(
+
spds[(*spd_index)++],
+ " -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 -1 0.0 0 0 0 0 0 -1");
+ break;
+ }
+ /* There is something to read, so get it from the pktpair child. If an interrupt occurs,
+ * just skip the read and go on
+ * RAC 2/8/10
+ */
+ if (ret > 0) {
+ if ((ret = read(mon_pipe2[0],
spds[*spd_index], 128))
+ < 0)
+ sprintf(
+
spds[*spd_index],
+ " -1 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1 -1 0.0 0 0 0 0 0 -1");
+ log_println(1,
+ "%d bytes read
'%s' from S2C monitor pipe", ret,
+
spds[*spd_index]);
+ (*spd_index)++;
+ if (i++ == 1)
+ break;
+ sel_tv.tv_sec = 1;
+ sel_tv.tv_usec = 100000;
+ continue;
+ }
+ }
+ }
+
+ log_println(1, "%6.0f kbps inbound pid-%d", x2cspd,
s2c_childpid);
+ }
+
+ /* alarm(30); *//* reset alarm() again, this 10 sec test should finish before this signal
+ * is generated. */
+ // Get web100 variables from snapshot taken earlier and send
to client
+ log_println(6, "S2C-Send web100 data vars to client pid=%d",
+ s2c_childpid);
+ ret = web100_get_data(tsnap, ctlsockfd, agent, count_vars); //send web100 data to client
+ web100_snapshot_free(tsnap);
+ ret = web100_get_data(rsnap, ctlsockfd, agent, count_vars); //send tuning-related web100 data collected to client
+ web100_snapshot_free(rsnap);
+
+ // If sending web100 variables above failed, indicate to
client
+ if (ret < 0) {
+ log_println(6, "S2C - No web100 data received for
pid=%d",
+ s2c_childpid);
+ sprintf(buff, "No Data Collected: 000000");
+ send_msg(ctlsockfd, TEST_MSG, buff, strlen(buff));
+ }
+
+ // Wait for message from client. Client sends its calculated throughput value
+ msgLen = sizeof(buff);
+ if (recv_msg(ctlsockfd, &msgType, buff, &msgLen)) {
+ log_println(0, "Protocol error!");
+ sprintf(
+ buff,
+ "Server (S2C throughput test): Invalid S2C
throughput received");
+ send_msg(ctlsockfd, MSG_ERROR, buff, strlen(buff));
+ return -1;
+ }
+ if (check_msg_type("S2C throughput test", TEST_MSG, msgType,
buff,
+ msgLen)) {
+ sprintf(
+ buff,
+ "Server (S2C throughput test): Invalid S2C
throughput received");
+ send_msg(ctlsockfd, MSG_ERROR, buff, strlen(buff));
+ return -2;
+ }
+ if (msgLen <= 0) {
+ log_println(0, "Improper message");
+ sprintf(
+ buff,
+ "Server (S2C throughput test): Invalid S2C
throughput received");
+ send_msg(ctlsockfd, MSG_ERROR, buff, strlen(buff));
+ return -3;
+ }
+ buff[msgLen] = 0;
+ *s2cspd = atoi(buff); // save Throughput value as seen by
client
+
+ // Final activities of ending tests. Close sockets, file
descriptors,
+ // send finalise message to client
+ close(xmitsfd);
+ if (send_msg(ctlsockfd, TEST_FINALIZE, "", 0) < 0)
+ log_println(6,
+ "S2C test - failed to send finalize
message to pid=%d",
+ s2c_childpid);
+
+ if (getuid() == 0) {
+ stop_packet_trace(mon_pipe2);
+ }
+
+ // log end of test (generic and protocol logs)
+ log_println(0, " <------------ %d ------------->",
testOptions->child0);
+ //log protocol validation logs
+ teststatuses = TEST_ENDED;
+ protolog_status(testOptions->child0, testids,
teststatuses,ctlsockfd);
+
+ setCurrentTest(TEST_NONE);
+
+ }
+ return 0;
+}
+
=======================================
--- /dev/null
+++ /trunk/src/tests_srv.h Mon Apr 30 13:46:39 2012
@@ -0,0 +1,29 @@
+/*
+ * This file contains the definitions and function declarations to
+ * handle the C2S test.
+ *
+ *

+ * Oct 2011
+ */
+
+#ifndef _JS_TESTS_SRV
+#define _JS_TESTS_SRV
+
+#include "testoptions.h"
+
+int test_c2s(int ctlsockfd, web100_agent* agent, TestOptions* testOptions,
+ int conn_options, double* c2sspd, int set_buff, int window,
+ int autotune, char* device, Options* options, int record_reverse,
+ int count_vars, char spds[4][256], int* spd_index);
+
+// S2C test
+int test_s2c(int ctlsockfd, web100_agent* agent, TestOptions* testOptions,
+ int conn_options, double* s2cspd, int set_buff, int window,
+ int autotune, char* device, Options* options, char
spds[4][256],
+ int* spd_index, int count_vars, CwndPeaks* peaks);
+
+// the middlebox test
+int test_mid(int ctlsockfd, web100_agent* agent, TestOptions* testOptions,
+ int conn_options, double* s2c2spd);
+
+#endif
=======================================
--- /trunk/Admin/Makefile.in Sun May 8 04:04:21 2011
+++ /dev/null
@@ -1,542 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-#########################################################################
-# #
-# Copyright (C) 2003 #
-# Internet2 #
-# All Rights Reserved #
-# #
-#########################################################################
-#
-# File: Makefile.am
-#
-# Author: Rich Carlson
-# Internet2
-#
-# Date: Mon Mar 1 13:33:27 CST 2004
-#
-# Description:
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-noinst_PROGRAMS = Admin.class$(EXEEXT)
-subdir = Admin
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_Admin_class_OBJECTS = Admin.$(OBJEXT)
-Admin_class_OBJECTS = $(am_Admin_class_OBJECTS)
-Admin_class_LDADD = $(LDADD)
-DEFAULT_INCLUDES =
-I.@am__isrc@
-I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-GCJCOMPILE = $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS)
-GCJLD = $(GCJ)
-SOURCES = $(Admin_class_SOURCES)
-DIST_SOURCES = $(Admin_class_SOURCES)
-JAVAC = javac
-JAVAROOT = $(top_builddir)
-am__installdirs = "$(DESTDIR)$(Admindir)" "$(DESTDIR)$(ndtdir)"
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-DATA = $(ndt_DATA)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GCJ = @GCJ@
-GCJDEPMODE = @GCJDEPMODE@
-GCJFLAGS = @GCJFLAGS@
-GREP = @GREP@
-I2UTILINCS = @I2UTILINCS@
-I2UTILLDFLAGS = @I2UTILLDFLAGS@
-I2UTILLIBDEPS = @I2UTILLIBDEPS@
-I2UTILLIBMAKE = @I2UTILLIBMAKE@
-I2UTILLIBS = @I2UTILLIBS@
-INCLUDED_PCAPLIB = @INCLUDED_PCAPLIB@
-INCLUDED_WEB100LIB = @INCLUDED_WEB100LIB@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LINKED_ODBCLIB = @LINKED_ODBCLIB@
-LINKED_PCAPLIB = @LINKED_PCAPLIB@
-LINKED_WEB100LIB = @LINKED_WEB100LIB@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NDTGCJFLAGS = @NDTGCJFLAGS@
-NDTINCDIR = @NDTINCDIR@
-NDTINCS = @NDTINCS@
-NDTJAR = @NDTJAR@
-NDTJARFLAG = @NDTJARFLAG@
-NDTLDFLAGS = @NDTLDFLAGS@
-NDTLIBDIR = @NDTLIBDIR@
-NDTLIBS = @NDTLIBS@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-SET_MAKE = @SET_MAKE@
-SGCJ = @SGCJ@
-SHELL = @SHELL@
-STRIP = @STRIP@
-TOP_BUILD_DIRS = @TOP_BUILD_DIRS@
-VERSION = @VERSION@
-ZLIB = @ZLIB@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_aux_dir = @ac_aux_dir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_GCJ = @ac_ct_GCJ@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-subdirs = @subdirs@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-GCJLINK = $(GCJLD)
-CLASSPATH_ENV =
-ndtdir = $(prefix)/ndt
-ndt_DATA = Admin.class
-Admindir = $(ndtdir)
-Admin_JAVA = Admin.java
-Admin_class_SOURCES = Admin.java
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .java .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Admin/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu Admin/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstPROGRAMS:
- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@

@am__quote@./$(DEPDIR)/Admin.Po@am__quote@
-
-.java.o:
-@am__fastdepGCJ_TRUE@ $(GCJCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepGCJ_TRUE@
$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@
$(GCJCOMPILE) -c -o $@ $<
-
-.java.obj:
-@am__fastdepGCJ_TRUE@ $(GCJCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepGCJ_TRUE@
$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@
$(GCJCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-install-AdminJAVA: classAdmin.stamp
- @$(NORMAL_INSTALL)
- test -z "$(Admindir)" || $(MKDIR_P) "$(DESTDIR)$(Admindir)"
- @test -n "$(Admin_JAVA)" && test -n "$(Admindir)" || exit 0; \
- set x *.class; shift; test "$$1" != "*.class" || exit 0; \
- echo " $(INSTALL_DATA)" "$$@" "'$(DESTDIR)$(Admindir)/$$p'"; \
- $(INSTALL_DATA) "$$@" "$(DESTDIR)$(Admindir)"
-
-uninstall-AdminJAVA:
- @$(NORMAL_UNINSTALL)
- @test -n "$(Admin_JAVA)" && test -n "$(Admindir)" || exit 0; \
- set x *.class; shift; test "$$1" != "*.class" || exit 0; \
- echo " ( cd '$(DESTDIR)$(Admindir)' && rm -f" "$$@" ")"; \
- cd "$(DESTDIR)$(Admindir)" && rm -f "$$@"
-
-clean-AdminJAVA:
- -rm -f *.class classAdmin.stamp
-install-ndtDATA: $(ndt_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(ndtdir)" || $(MKDIR_P) "$(DESTDIR)$(ndtdir)"
- @list='$(ndt_DATA)'; test -n "$(ndtdir)" || list=; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(ndtdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(ndtdir)" || exit $$?; \
- done
-
-uninstall-ndtDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(ndt_DATA)'; test -n "$(ndtdir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(ndtdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(ndtdir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir);
fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS) classAdmin.stamp $(DATA)
-installdirs:
- for dir in "$(DESTDIR)$(Admindir)" "$(DESTDIR)$(ndtdir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s
\
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-AdminJAVA clean-generic clean-noinstPROGRAMS \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-AdminJAVA install-ndtDATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-AdminJAVA uninstall-ndtDATA
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-AdminJAVA \
- clean-generic clean-noinstPROGRAMS ctags distclean \
- distclean-compile distclean-generic distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-AdminJAVA \
- install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-ndtDATA install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
- ps ps-am tags uninstall uninstall-AdminJAVA uninstall-am \
- uninstall-ndtDATA
-
-
-Admin$(EXEEXT): $(Admin_OBJECTS) $(Admin_DEPENDENCIES)
- @rm -f Admin$(EXEEXT)
- @if test ! -s "classAdmin.stamp"; then \
- $(GCJLINK) $(Admin_LDFLAGS) $(Admin_OBJECTS) $(Admin_LDADD)
$(LIBS); \
- echo timestamp > classAdmin.stamp; \
- else :; fi
-
-classAdmin.stamp: $(Admin_JAVA)
- if test -n "$?"; then \
- echo '$(GCJ) $?' ; \
- $(GCJ) $?; \
- else :; fi
- echo timestamp > classAdmin.stamp
-
-Admin.class: $(Admin_JAVA)
- $(GCJ) $(Admin_JAVA)
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
=======================================
--- /trunk/Applet/Makefile.in Sun May 8 04:04:21 2011
+++ /dev/null
@@ -1,558 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-#########################################################################
-# #
-# Copyright (C) 2003 #
-# Internet2 #
-# All Rights Reserved #
-# #
-#########################################################################
-#
-# File: Makefile.am
-#
-# Author: Rich Carlson
-# Internet2
-#
-# Date: Mon Mar 1 13:33:27 CST 2004
-#
-# Description:
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-noinst_PROGRAMS = Tcpbw100.jar$(EXEEXT)
-subdir = Applet
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_Tcpbw100_jar_OBJECTS = Tcpbw100.$(OBJEXT)
-Tcpbw100_jar_OBJECTS = $(am_Tcpbw100_jar_OBJECTS)
-Tcpbw100_jar_LDADD = $(LDADD)
-DEFAULT_INCLUDES =
-I.@am__isrc@
-I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-GCJCOMPILE = $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS)
-GCJLD = $(GCJ)
-SOURCES = $(Tcpbw100_jar_SOURCES)
-DIST_SOURCES = $(Tcpbw100_jar_SOURCES)
-JAVAC = javac
-JAVAROOT = $(top_builddir)
-am__installdirs = "$(DESTDIR)$(Tcpbw100dir)" "$(DESTDIR)$(ndtdir)"
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-DATA = $(ndt_DATA)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GCJ = @GCJ@
-GCJDEPMODE = @GCJDEPMODE@
-GCJFLAGS = @GCJFLAGS@
-GREP = @GREP@
-I2UTILINCS = @I2UTILINCS@
-I2UTILLDFLAGS = @I2UTILLDFLAGS@
-I2UTILLIBDEPS = @I2UTILLIBDEPS@
-I2UTILLIBMAKE = @I2UTILLIBMAKE@
-I2UTILLIBS = @I2UTILLIBS@
-INCLUDED_PCAPLIB = @INCLUDED_PCAPLIB@
-INCLUDED_WEB100LIB = @INCLUDED_WEB100LIB@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LINKED_ODBCLIB = @LINKED_ODBCLIB@
-LINKED_PCAPLIB = @LINKED_PCAPLIB@
-LINKED_WEB100LIB = @LINKED_WEB100LIB@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NDTGCJFLAGS = @NDTGCJFLAGS@
-NDTINCDIR = @NDTINCDIR@
-NDTINCS = @NDTINCS@
-NDTJAR = @NDTJAR@
-NDTJARFLAG = @NDTJARFLAG@
-NDTLDFLAGS = @NDTLDFLAGS@
-NDTLIBDIR = @NDTLIBDIR@
-NDTLIBS = @NDTLIBS@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-SET_MAKE = @SET_MAKE@
-SGCJ = @SGCJ@
-SHELL = @SHELL@
-STRIP = @STRIP@
-TOP_BUILD_DIRS = @TOP_BUILD_DIRS@
-VERSION = @VERSION@
-ZLIB = @ZLIB@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_aux_dir = @ac_aux_dir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_GCJ = @ac_ct_GCJ@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-subdirs = @subdirs@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-GCJLINK = $(GCJLD)
-CLASSPATH_ENV =
-ndtdir = $(prefix)/ndt
-ndt_DATA = Tcpbw100.jar
-Tcpbw100dir = $(ndtdir)
-Tcpbw100_JAVA = Tcpbw100.java
-Tcpbw100_jar_SOURCES = Tcpbw100.java
-EXTRA_DIST = MANIFEST.MF Tcpbw100_msgs_ca_ES.properties Tcpbw100_msgs_nb_NO.properties Tcpbw100_msgs_en_US.properties Tcpbw100_msgs_nl_NL.properties Tcpbw100_msgs_fr_FR.properties Tcpbw100_msgs_ru_RU.properties Tcpbw100_msgs_pt_BR.properties
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .java .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Applet/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu Applet/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstPROGRAMS:
- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@

@am__quote@./$(DEPDIR)/Tcpbw100.Po@am__quote@
-
-.java.o:
-@am__fastdepGCJ_TRUE@ $(GCJCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepGCJ_TRUE@
$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@
$(GCJCOMPILE) -c -o $@ $<
-
-.java.obj:
-@am__fastdepGCJ_TRUE@ $(GCJCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepGCJ_TRUE@
$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@
$(GCJCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-classTcpbw100.stamp: $(Tcpbw100_JAVA)
- @list1='$?'; list2=; if test -n "$$list1"; then \
- for p in $$list1; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- list2="$$list2 $$d$$p"; \
- done; \
- echo '$(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) '"$$list2"; \
- $(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) $$list2; \
- else :; fi
- echo timestamp > classTcpbw100.stamp
-install-Tcpbw100JAVA: classTcpbw100.stamp
- @$(NORMAL_INSTALL)
- test -z "$(Tcpbw100dir)" || $(MKDIR_P) "$(DESTDIR)$(Tcpbw100dir)"
- @test -n "$(Tcpbw100_JAVA)" && test -n "$(Tcpbw100dir)" || exit 0; \
- set x *.class; shift; test "$$1" != "*.class" || exit 0; \
- echo " $(INSTALL_DATA)" "$$@" "'$(DESTDIR)$(Tcpbw100dir)/$$p'"; \
- $(INSTALL_DATA) "$$@" "$(DESTDIR)$(Tcpbw100dir)"
-
-uninstall-Tcpbw100JAVA:
- @$(NORMAL_UNINSTALL)
- @test -n "$(Tcpbw100_JAVA)" && test -n "$(Tcpbw100dir)" || exit 0; \
- set x *.class; shift; test "$$1" != "*.class" || exit 0; \
- echo " ( cd '$(DESTDIR)$(Tcpbw100dir)' && rm -f" "$$@" ")"; \
- cd "$(DESTDIR)$(Tcpbw100dir)" && rm -f "$$@"
-
-clean-Tcpbw100JAVA:
- -rm -f *.class classTcpbw100.stamp
-install-ndtDATA: $(ndt_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(ndtdir)" || $(MKDIR_P) "$(DESTDIR)$(ndtdir)"
- @list='$(ndt_DATA)'; test -n "$(ndtdir)" || list=; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(ndtdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(ndtdir)" || exit $$?; \
- done
-
-uninstall-ndtDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(ndt_DATA)'; test -n "$(ndtdir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(ndtdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(ndtdir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir);
fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS) classTcpbw100.stamp $(DATA)
-installdirs:
- for dir in "$(DESTDIR)$(Tcpbw100dir)" "$(DESTDIR)$(ndtdir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s
\
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-Tcpbw100JAVA clean-generic clean-noinstPROGRAMS \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-Tcpbw100JAVA install-ndtDATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-Tcpbw100JAVA uninstall-ndtDATA
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-Tcpbw100JAVA \
- clean-generic clean-noinstPROGRAMS ctags distclean \
- distclean-compile distclean-generic distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-Tcpbw100JAVA \
- install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-ndtDATA install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
- ps ps-am tags uninstall uninstall-Tcpbw100JAVA uninstall-am \
- uninstall-ndtDATA
-
-
-Tcpbw100$(EXEEXT): $(Tcpbw100_OBJECTS) $(Tcpbw100_DEPENDENCIES)
- @rm -f Tcpbw100$(EXEEXT)
- @if test ! -s "classTcpbw100.stamp"; then \
- $(GCJLINK) $(Tcpbw100_LDFLAGS) $(Tcpbw100_OBJECTS) $(Tcpbw100_LDADD) $(LIBS); \
- echo timestamp > classTcpbw100.stamp; \
- else :; fi
-
-classTcpbw100stamp: $(Tcpbw100_JAVA)
- if test -n "$?"; then \
- echo '$(GCJ) $(NDTGCJFLAGS) $?' ; \
- $(GCJ) $(NDTGCJFLAGS) $?; \
- else :; fi
- echo timestamp > classTcpbw100.stamp
-
-Tcpbw100.class: $(Tcpbw100_JAVA)
- $(GCJ) $(NDTGCJFLAGS) $(Tcpbw100_JAVA)
-
-Tcpbw100.jar: Tcpbw100.class
- $(NDTJAR) $(NDTJARFLAG) MANIFEST.MF Tcpbw100.jar Tcpbw100*.class Tcpbw100*.properties
- echo timestamp > classTcpbw100.stamp
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
=======================================
--- /trunk/Makefile.in Sun May 8 04:04:21 2011
+++ /dev/null
@@ -1,796 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-#########################################################################
-# #
-# Copyright (C) 2002 #
-# Internet2 #
-# All Rights Reserved #
-# #
-#########################################################################
-#
-# File: Makefile.am
-#
-# Author: Rich Carlson
-# Internet2
-#
-# Date: Fri Feb 27 13:37:24 CST 2004
-#
-# Description: toplevel build for bwctl
-#
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-subdir = .
-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(srcdir)/config.h.in \
- $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
- config/compile config/depcomp config/install-sh config/missing \
- config/mkinstalldirs
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(ndtdir)"
-DATA = $(ndt_DATA)
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
- distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
- distdir dist dist-all distcheck
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = @TOP_BUILD_DIRS@ src conf doc Admin Applet janalyze
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
- { test ! -d "$(distdir)" \
- || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -fr "$(distdir)"; }; }
-am__relativize = \
- dir0=`pwd`; \
- sed_first='s,^\([^/]*\)/.*$$,\1,'; \
- sed_rest='s,^[^/]*/*,,'; \
- sed_last='s,^.*/\([^/]*\)$$,\1,'; \
- sed_butlast='s,/*[^/]*$$,,'; \
- while test -n "$$dir1"; do \
- first=`echo "$$dir1" | sed -e "$$sed_first"`; \
- if test "$$first" != "."; then \
- if test "$$first" = ".."; then \
- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
- else \
- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
- if test "$$first2" = "$$first"; then \
- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
- else \
- dir2="../$$dir2"; \
- fi; \
- dir0="$$dir0"/"$$first"; \
- fi; \
- fi; \
- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
- done; \
- reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-distuninstallcheck_listfiles = find . -type f -print
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GCJ = @GCJ@
-GCJDEPMODE = @GCJDEPMODE@
-GCJFLAGS = @GCJFLAGS@
-GREP = @GREP@
-I2UTILINCS = @I2UTILINCS@
-I2UTILLDFLAGS = @I2UTILLDFLAGS@
-I2UTILLIBDEPS = @I2UTILLIBDEPS@
-I2UTILLIBMAKE = @I2UTILLIBMAKE@
-I2UTILLIBS = @I2UTILLIBS@
-INCLUDED_PCAPLIB = @INCLUDED_PCAPLIB@
-INCLUDED_WEB100LIB = @INCLUDED_WEB100LIB@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LINKED_ODBCLIB = @LINKED_ODBCLIB@
-LINKED_PCAPLIB = @LINKED_PCAPLIB@
-LINKED_WEB100LIB = @LINKED_WEB100LIB@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NDTGCJFLAGS = @NDTGCJFLAGS@
-NDTINCDIR = @NDTINCDIR@
-NDTINCS = @NDTINCS@
-NDTJAR = @NDTJAR@
-NDTJARFLAG = @NDTJARFLAG@
-NDTLDFLAGS = @NDTLDFLAGS@
-NDTLIBDIR = @NDTLIBDIR@
-NDTLIBS = @NDTLIBS@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-SET_MAKE = @SET_MAKE@
-SGCJ = @SGCJ@
-SHELL = @SHELL@
-STRIP = @STRIP@
-TOP_BUILD_DIRS = @TOP_BUILD_DIRS@
-VERSION = @VERSION@
-ZLIB = @ZLIB@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_aux_dir = @ac_aux_dir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_GCJ = @ac_ct_GCJ@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-subdirs = @subdirs@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-@HAVE_GCJ_FALSE@SUBDIRS
= @TOP_BUILD_DIRS@ src conf doc
-@HAVE_GCJ_TRUE@SUBDIRS = @TOP_BUILD_DIRS@ src Admin Applet conf doc janalyze
-EXTRA_DIST = admin_description.html admin.html \
- tcpbw100.template copyright.html web100variables.html \
- web100_variables COPYRIGHT \
- DISCUSSION-LIST FILES Readme-fakewww Readme-web100srv \
- contrib/README contrib/loadmap.intro contrib/loadmap.js \
- contrib/loadmap.txt contrib/Tcpbw1001.java \
- tfw/client.py tfw/communication.py tfw/hosts.py tfw/network.py \
- tfw/Readme tfw/scenarios.py tfw/server.py tfw/traffics.py
tfw/widgets.py
-
-ndtdir = $(prefix)/ndt
-ndt_DATA = admin_description.html admin.html \
- copyright.html web100variables.html web100_variables
-
-all: config.h
- $(MAKE) $(AM_MAKEFLAGS) all-recursive
-
-.SUFFIXES:
-am--refresh:
- @:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
- $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- echo ' $(SHELL) ./config.status'; \
- $(SHELL) ./config.status;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- $(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure: $(am__configure_deps)
- $(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-
-config.h: stamp-h1
- @if test ! -f $@; then \
- rm -f stamp-h1; \
- $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
- else :; fi
-
-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
- @rm -f stamp-h1
- cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in: $(am__configure_deps)
- ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
- rm -f stamp-h1
- touch $@
-
-distclean-hdr:
- -rm -f config.h stamp-h1
-install-ndtDATA: $(ndt_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(ndtdir)" || $(MKDIR_P) "$(DESTDIR)$(ndtdir)"
- @list='$(ndt_DATA)'; test -n "$(ndtdir)" || list=; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(ndtdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(ndtdir)" || exit $$?; \
- done
-
-uninstall-ndtDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(ndt_DATA)'; test -n "$(ndtdir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(ndtdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(ndtdir)" && rm -f $$files
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- dot_seen=yes; \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done; \
- if test "$$dot_seen" = "no"; then \
- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
- fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
- include_option=--etags-include; \
- empty_fix=.; \
- else \
- include_option=--include; \
- empty_fix=; \
- fi; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test ! -f $$subdir/TAGS || \
- set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
- fi; \
- done; \
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- $(am__remove_distdir)
- test -d "$(distdir)" || mkdir "$(distdir)"
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir);
fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
- $(am__relativize); \
- new_distdir=$$reldir; \
- dir1=$$subdir; dir2="$(top_distdir)"; \
- $(am__relativize); \
- new_top_distdir=$$reldir; \
- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
- ($(am__cd) $$subdir && \
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$$new_top_distdir" \
- distdir="$$new_distdir" \
- am__remove_distdir=: \
- am__skip_length_check=: \
- am__skip_mode_fix=: \
- distdir) \
- || exit 1; \
- fi; \
- done
- -test -n "$(am__skip_mode_fix)" \
- || find "$(distdir)" -type d ! -perm -755 \
- -exec chmod u+rwx,go+rx {} \; -o \
- ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
- ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
- ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
- || chmod -R a+r "$(distdir)"
-dist-gzip: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c
$(distdir).tar.gz
- $(am__remove_distdir)
-
-dist-bzip2: distdir
- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
- $(am__remove_distdir)
-
-dist-lzma: distdir
- tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
- $(am__remove_distdir)
-
-dist-xz: distdir
- tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
- $(am__remove_distdir)
-
-dist-tarZ: distdir
- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
- $(am__remove_distdir)
-
-dist-shar: distdir
- shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
- $(am__remove_distdir)
-
-dist-zip: distdir
- -rm -f $(distdir).zip
- zip -rq $(distdir).zip $(distdir)
- $(am__remove_distdir)
-
-dist dist-all: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c
$(distdir).tar.gz
- $(am__remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration. Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
- case '$(DIST_ARCHIVES)' in \
- *.tar.gz*) \
- GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
- *.tar.bz2*) \
- bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
- *.tar.lzma*) \
- lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
- *.tar.xz*) \
- xz -dc $(distdir).tar.xz | $(am__untar) ;;\
- *.tar.Z*) \
- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
- *.shar.gz*) \
- GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
- *.zip*) \
- unzip $(distdir).zip ;;\
- esac
- chmod -R a-w $(distdir); chmod a+w $(distdir)
- mkdir $(distdir)/_build
- mkdir $(distdir)/_inst
- chmod a-w $(distdir)
- test -d $(distdir)/_build || exit 0; \
- dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
- && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
- && am__cwd=`pwd` \
- && $(am__cd) $(distdir)/_build \
- && ../configure --srcdir=.. --prefix="$$dc_install_base" \
- $(DISTCHECK_CONFIGURE_FLAGS) \
- && $(MAKE) $(AM_MAKEFLAGS) \
- && $(MAKE) $(AM_MAKEFLAGS) dvi \
- && $(MAKE) $(AM_MAKEFLAGS) check \
- && $(MAKE) $(AM_MAKEFLAGS) install \
- && $(MAKE) $(AM_MAKEFLAGS) installcheck \
- && $(MAKE) $(AM_MAKEFLAGS) uninstall \
- && $(MAKE) $(AM_MAKEFLAGS)
distuninstallcheck_dir="$$dc_install_base" \
- distuninstallcheck \
- && chmod -R a-w "$$dc_install_base" \
- && ({ \
- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
- distuninstallcheck_dir="$$dc_destdir" distuninstallcheck;
\
- } || { rm -rf "$$dc_destdir"; exit 1; }) \
- && rm -rf "$$dc_destdir" \
- && $(MAKE) $(AM_MAKEFLAGS) dist \
- && rm -rf $(DIST_ARCHIVES) \
- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
- && cd "$$am__cwd" \
- || exit 1
- $(am__remove_distdir)
- @(echo "$(distdir) archives ready for distribution: "; \
- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
- sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
- @$(am__cd) '$(distuninstallcheck_dir)' \
- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
- || { echo "ERROR: files left after uninstall:" ; \
- if test -n "$(DESTDIR)"; then \
- echo " (check DESTDIR support)"; \
- fi ; \
- $(distuninstallcheck_listfiles) ; \
- exit 1; } >&2
-distcleancheck: distclean
- @if test '$(srcdir)' = . ; then \
- echo "ERROR: distcleancheck can only run from a VPATH build" ; \
- exit 1 ; \
- fi
- @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
- || { echo "ERROR: files left in build directory after distclean:" ;
\
- $(distcleancheck_listfiles) ; \
- exit 1; } >&2
-check-am: all-am
-check: check-recursive
-all-am: Makefile $(DATA) config.h
-installdirs: installdirs-recursive
-installdirs-am:
- for dir in "$(DESTDIR)$(ndtdir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s
\
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-recursive
- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am: install-ndtDATA
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -rf $(top_srcdir)/autom4te.cache
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-ndtDATA
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
- ctags-recursive install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am am--refresh check check-am clean clean-generic \
- ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
- dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \
- distclean distclean-generic distclean-hdr distclean-tags \
- distcleancheck distdir distuninstallcheck dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-ndtDATA install-pdf \
- install-pdf-am install-ps install-ps-am install-strip \
- installcheck installcheck-am installdirs installdirs-am \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \
- uninstall uninstall-am uninstall-ndtDATA
-
-
-sdatadir:
- test -z "$(ndtdir)/serverdata" || $(mkdir_p) "$(ndtdir)/serverdata"
-
-install: sdatadir install-recursive
-
-# uncomment this when we stop using broken automake 1.5
-# (then remove from DIST_EXTRA in subdir)
-#nobase_include_HEADERS = bwlib/bwlib.h
-
-#EXTRA_DIST = bootstrap
-#MAINTAINERCLEANFILES = aclocal.m4 Makefile.in configure config.log \
-# config.status
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
=======================================
--- /trunk/aclocal.m4 Sun May 8 04:04:21 2011
+++ /dev/null
@@ -1,970 +0,0 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-m4_ifndef([AC_AUTOCONF_VERSION],
- [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
-[m4_warning([this file was generated for autoconf 2.65.
-You have another version of autoconf. It may work, but is not guaranteed to.
-If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
-
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-# (This private macro should not be called outside this file.)
-AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.11'
-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
-dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.11.1], [],
- [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
-
-# _AM_AUTOCONF_VERSION(VERSION)
-# -----------------------------
-# aclocal traces this macro to find the Autoconf version.
-# This is a private macro too. Using m4_define simplifies
-# the logic in aclocal, which can simply ignore this definition.
-m4_define([_AM_AUTOCONF_VERSION], [])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.1])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
- [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-
-# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
-#
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory. The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run. This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
-#
-# $ac_aux_dir/missing
-# fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-# fails if $ac_aux_dir is absolute,
-# fails when called from a subdirectory in a VPATH build with
-# a relative $ac_aux_dir
-#
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir. In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
-#
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
-# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-# MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
-#
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH. The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
-
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-
-# AM_CONDITIONAL -*- Autoconf -*-
-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 9
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
- $1_TRUE=
- $1_FALSE='#'
-else
- $1_TRUE='#'
- $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
- AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 10
-
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery. Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
- [$1], CXX, [depcc="$CXX" am_compiler_list=],
- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
- [$1], UPC, [depcc="$UPC" am_compiler_list=],
- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
- [depcc="$$1" am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
- [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_$1_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
- fi
- am__universal=false
- m4_case([$1], [CC],
- [case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac],
- [CXX],
- [case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac])
-
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
- am__obj=sub/conftest.${OBJEXT-o}
- am__minus_obj="-o $am__obj"
- case $depmode in
- gcc)
- # This depmode causes a compiler race in universal mode.
- test "$am__universal" = false || continue
- ;;
- nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
- # not run yet. These depmodes are late enough in the game, and
- # so weak that their functioning should not be impacted.
- am__obj=conftest.${OBJEXT-o}
- am__minus_obj=
- ;;
- none) break ;;
- esac
- if depmode=$depmode \
- source=sub/conftest.c object=$am__obj \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_$1_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[ --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors])
-if test "x$enable_dependency_tracking" != xno; then
- am_depcomp="$ac_aux_dir/depcomp"
- AMDEPBACKSLASH='\'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-])
-
-# Generate code to set up dependency tracking. -*- Autoconf -*-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-#serial 5
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
- # Autoconf 2.62 quotes --file arguments for eval, but not when files
- # are listed without --file. Let's play safe and only enable the eval
- # if we detect the quoting.
- case $CONFIG_FILES in
- *\'*) eval set x "$CONFIG_FILES" ;;
- *) set x $CONFIG_FILES ;;
- esac
- shift
- for mf
- do
- # Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # Grep'ing the whole file is not good either: AIX grep has a line
- # limit of 2048, but all sed's we know have understand at least 4000.
- if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X
/dev/null 2>&1; then
- dirpart=`AS_DIRNAME("$mf")`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`AS_DIRNAME(["$file"])`
- AS_MKDIR_P([$dirpart/$fdir])
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
- done
-}
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled. FIXME. This creates each `.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
- [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
- [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-
-# Check for Java compiler. -*- Autoconf -*-
-# For now we only handle the GNU compiler.
-
-# Copyright (C) 1999, 2000, 2003, 2005, 2009 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([AM_PROG_GCJ],[
-AC_CHECK_TOOLS(GCJ, gcj, gcj)
-test -z "$GCJ" && AC_MSG_ERROR([no acceptable gcj found in \$PATH])
-if test "x${GCJFLAGS-unset}" = xunset; then
- GCJFLAGS="-g -O2"
-fi
-AC_SUBST(GCJFLAGS)
-_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES(GCJ)])
-])
-
-# Do all the work for Automake. -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 16
-
-# This macro actually does too much. Some checks are only needed if
-# your package does certain things. But this isn't really a big deal.
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out. PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition. After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
-dnl Autoconf wants to disallow AM_ names. We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
- # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
- # is not polluted with repeated "-I."
- AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
- # test to see if srcdir already configured
- if test -f $srcdir/config.status; then
- AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
- fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
- if (cygpath --version) >/dev/null 2>/dev/null; then
- CYGPATH_W='cygpath -w'
- else
- CYGPATH_W=echo
- fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
- [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
- [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
- [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
- [_AM_DEPENDENCIES(CC)],
- [define([AC_PROG_CC],
- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
- [_AM_DEPENDENCIES(CXX)],
- [define([AC_PROG_CXX],
- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
- [_AM_DEPENDENCIES(OBJC)],
- [define([AC_PROG_OBJC],
- defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
-])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
-AC_CONFIG_COMMANDS_PRE(dnl
-[m4_provide_if([_AM_COMPILER_EXEEXT],
- [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-])
-
-dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
-dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
-dnl mangled by Autoconf and run in a shell conditional statement.
-m4_define([_AC_COMPILER_EXEEXT],
-m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
-
-
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated. The stamp files are numbered to have different names.
-
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_arg=$1
-_am_stamp_count=1
-for _am_header in $config_headers :; do
- case $_am_header in
- $_am_arg | $_am_arg:* )
- break ;;
- * )
- _am_stamp_count=`expr $_am_stamp_count + 1` ;;
- esac
-done
-echo "timestamp for $_am_arg"
`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-
-# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
- *)
- install_sh="\${SHELL} $am_aux_dir/install-sh"
- esac
-fi
-AC_SUBST(install_sh)])
-
-# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot. For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
- am__leading_dot=.
-else
- am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Check to see how 'make' treats includes. -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
- @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
- am__include=include
- am__quote=
- _am_result=GNU
- ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
- am__include=.include
- am__quote="\""
- _am_result=BSD
- ;;
- esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-
-# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 6
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([missing])dnl
-if test x"${MISSING+set}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
- *)
- MISSING="\${SHELL} $am_aux_dir/missing" ;;
- esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
-else
- am_missing_run=
- AC_MSG_WARN([`missing' script is too old or missing])
-fi
-])
-
-# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
- [[\\/$]]* | ?:[[\\/]]*) ;;
- */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
-# Helper functions for option handling. -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# ------------------------------
-# Set option NAME. Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Check to make sure that the build environment is sane. -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 5
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name. Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
- *[[\\\"\#\$\&\'\`$am_lf]]*)
- AC_MSG_ERROR([unsafe absolute working directory name]);;
-esac
-case $srcdir in
- *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
- AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
-esac
-
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments. Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$[*]" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- rm -f conftest.file
- if test "$[*]" != "X $srcdir/configure conftest.file" \
- && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
-alias in your environment])
- fi
-
- test "$[2]" = conftest.file
- )
-then
- # Ok.
- :
-else
- AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT(yes)])
-
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_STRIP
-# ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
-# specify the program used to strip binaries. This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
-if test "$cross_compiling" != no; then
- AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# _AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
-# This macro is traced by Automake.
-AC_DEFUN([_AM_SUBST_NOTMAKE])
-
-# AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Public sister of _AM_SUBST_NOTMAKE.
-AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-
-# Check how to create a tarball. -*- Autoconf -*-
-
-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# _AM_PROG_TAR(FORMAT)
-# --------------------
-# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
-#
-# Substitute a variable $(am__tar) that is a command
-# writing to stdout a FORMAT-tarball containing the directory
-# $tardir.
-# tardir=directory && $(am__tar) > result.tar
-#
-# Substitute a variable $(am__untar) that extract such
-# a tarball read from stdin.
-# $(am__untar) < result.tar
-AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
-m4_if([$1], [v7],
- [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
- [m4_case([$1], [ustar],, [pax],,
- [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-for _am_tool in $_am_tools
-do
- case $_am_tool in
- gnutar)
- for _am_tar in tar gnutar gtar;
- do
- AM_RUN_LOG([$_am_tar --version]) && break
- done
- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
- am__untar="$_am_tar -xf -"
- ;;
- plaintar)
- # Must skip GNU tar: if it does not support --format= it doesn't create
- # ustar tarball either.
- (tar --version) >/dev/null 2>&1 && continue
- am__tar='tar chf - "$$tardir"'
- am__tar_='tar chf - "$tardir"'
- am__untar='tar xf -'
- ;;
- pax)
- am__tar='pax -L -x $1 -w "$$tardir"'
- am__tar_='pax -L -x $1 -w "$tardir"'
- am__untar='pax -r'
- ;;
- cpio)
- am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
- am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
- am__untar='cpio -i -H $1 -d'
- ;;
- none)
- am__tar=false
- am__tar_=false
- am__untar=false
- ;;
- esac
-
- # If the value was cached, stop now. We just wanted to have am__tar
- # and am__untar set.
- test -n "${am_cv_prog_tar_$1}" && break
-
- # tar/untar a dummy directory, and stop if the command works
- rm -rf conftest.dir
- mkdir conftest.dir
- echo GrepMe > conftest.dir/file
- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
- rm -rf conftest.dir
- if test -s conftest.tar; then
- AM_RUN_LOG([$am__untar <conftest.tar])
- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
- fi
-done
-rm -rf conftest.dir
-
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-]) # _AM_PROG_TAR
-
=======================================
--- /trunk/conf/Makefile.in Sun May 8 04:04:21 2011
+++ /dev/null
@@ -1,364 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-subdir = conf
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-DATA = $(noinst_DATA)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GCJ = @GCJ@
-GCJDEPMODE = @GCJDEPMODE@
-GCJFLAGS = @GCJFLAGS@
-GREP = @GREP@
-I2UTILINCS = @I2UTILINCS@
-I2UTILLDFLAGS = @I2UTILLDFLAGS@
-I2UTILLIBDEPS = @I2UTILLIBDEPS@
-I2UTILLIBMAKE = @I2UTILLIBMAKE@
-I2UTILLIBS = @I2UTILLIBS@
-INCLUDED_PCAPLIB = @INCLUDED_PCAPLIB@
-INCLUDED_WEB100LIB = @INCLUDED_WEB100LIB@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LINKED_ODBCLIB = @LINKED_ODBCLIB@
-LINKED_PCAPLIB = @LINKED_PCAPLIB@
-LINKED_WEB100LIB = @LINKED_WEB100LIB@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NDTGCJFLAGS = @NDTGCJFLAGS@
-NDTINCDIR = @NDTINCDIR@
-NDTINCS = @NDTINCS@
-NDTJAR = @NDTJAR@
-NDTJARFLAG = @NDTJARFLAG@
-NDTLDFLAGS = @NDTLDFLAGS@
-NDTLIBDIR = @NDTLIBDIR@
-NDTLIBS = @NDTLIBS@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-SET_MAKE = @SET_MAKE@
-SGCJ = @SGCJ@
-SHELL = @SHELL@
-STRIP = @STRIP@
-TOP_BUILD_DIRS = @TOP_BUILD_DIRS@
-VERSION = @VERSION@
-ZLIB = @ZLIB@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_aux_dir = @ac_aux_dir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_GCJ = @ac_ct_GCJ@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-subdirs = @subdirs@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-
-#########################################################################
-# #
-# Copyright (C) 2003 #
-# Internet2 #
-# All Rights Reserved #
-# #
-#########################################################################
-#
-# File: Makefile.am
-#
-# Author: Jeff W. Boote
-# Internet2
-#
-# Date: Tue Sep 9 16:24:58 MDT 2003
-#
-# Description: constructing ndt conf files from templates
-# This doesn't really do this yet - it just provides
-# examples.
-noinst_DATA = ndt.conf create-html.sh start.ndt ndt autostart.sh
-EXTRA_DIST = $(noinst_DATA)
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu conf/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu conf/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir);
fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s
\
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic distclean \
- distclean-generic distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
=======================================
--- /trunk/config.h.in Sun May 8 04:04:21 2011
+++ /dev/null
@@ -1,195 +0,0 @@
-/* config.h.in. Generated from configure.ac by autoheader. */
-
-/* Define to 1 if you have the `alarm' function. */
-#undef HAVE_ALARM
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#undef HAVE_ARPA_INET_H
-
-/* Define to 1 if you have the `bzero' function. */
-#undef HAVE_BZERO
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the `fork' function. */
-#undef HAVE_FORK
-
-/* Define to 1 if you have the `gethostbyaddr' function. */
-#undef HAVE_GETHOSTBYADDR
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#undef HAVE_GETTIMEOFDAY
-
-/* Define to 1 if you have the `inet_ntoa' function. */
-#undef HAVE_INET_NTOA
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the 'pcap' library (-lpcap). */
-#undef HAVE_LIBPCAP
-
-/* Define to 1 if you have the 'Web100' library (-lweb100). */
-#undef HAVE_LIBWEB100
-
-/* Define to 1 if you have the <linux/icmpv6.h> header file. */
-#undef HAVE_LINUX_ICMPV6_H
-
-/* Define to 1 if you have the <linux/sockios.h> header file. */
-#undef HAVE_LINUX_SOCKIOS_H
-
-/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
- to 0 otherwise. */
-#undef HAVE_MALLOC
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `memset' function. */
-#undef HAVE_MEMSET
-
-/* Define to 1 if you have the <netdb.h> header file. */
-#undef HAVE_NETDB_H
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#undef HAVE_NETINET_IN_H
-
-/* Define to 1 if you have the <netinet/ip6.h> header file. */
-#undef HAVE_NETINET_IP6_H
-
-/* Define to 1 if you have the <net/ethernet.h> header file. */
-#undef HAVE_NET_ETHERNET_H
-
-/* Define to 1 if you have the 'odbc' library (-lodbc). */
-#undef HAVE_ODBC
-
-/* Have PCAP header file. */
-#undef HAVE_PCAP_H
-
-/* Define to 1 if you have the `select' function. */
-#undef HAVE_SELECT
-
-/* Define to 1 if you have the `socket' function. */
-#undef HAVE_SOCKET
-
-/* Define to 1 if you have the <sql.h> header file. */
-#undef HAVE_SQL_H
-
-/* Define to 1 if you have the `sqrt' function. */
-#undef HAVE_SQRT
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the `strchr' function. */
-#undef HAVE_STRCHR
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the `strstr' function. */
-#undef HAVE_STRSTR
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-#undef HAVE_SYS_SELECT_H
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#undef HAVE_SYS_SOCKET_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
-#undef HAVE_SYS_WAIT_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the `vfork' function. */
-#undef HAVE_VFORK
-
-/* Define to 1 if you have the <vfork.h> header file. */
-#undef HAVE_VFORK_H
-
-/* Define to 1 if you have the `wait3' system call. Deprecated, you should no
- longer depend upon `wait3'. */
-#undef HAVE_WAIT3
-
-/* Define to 1 if `fork' works. */
-#undef HAVE_WORKING_FORK
-
-/* Define to 1 if `vfork' works. */
-#undef HAVE_WORKING_VFORK
-
-/* Define to 1 if you have the 'zlib' library (-lz). */
-#undef HAVE_ZLIB
-
-/* Have ZLIB header file. */
-#undef HAVE_ZLIB_H
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#undef RETSIGTYPE
-
-/* Define to the type of arg 1 for `select'. */
-#undef SELECT_TYPE_ARG1
-
-/* Define to the type of args 2, 3 and 4 for `select'. */
-#undef SELECT_TYPE_ARG234
-
-/* Define to the type of arg 5 for `select'. */
-#undef SELECT_TYPE_ARG5
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Version number of package */
-#undef VERSION
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to rpl_malloc if the replacement function should be used. */
-#undef malloc
-
-/* Define to `int' if <sys/types.h> does not define. */
-#undef pid_t
-
-/* Define as `fork' if `vfork' does not work. */
-#undef vfork
=======================================
--- /trunk/configure Sun May 8 04:04:21 2011
+++ /dev/null
@@ -1,8028 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.65 for NDT 3.6.4.
-#
-# Report bugs to
<>.
-#
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in #(
- *posix*) :
- set -o posix ;; #(
- *) :
- ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-case $0 in #((
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test "x$CONFIG_SHELL" = x; then
- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh)
/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on
\${1+\"\$@\"},
which
- # is contrary to our usage. Disable this feature.
- alias -g
'\${1+\"\$@\"}'='\"\$@\"'
- setopt NO_GLOB_SUBST
-else
- case \`(set -o) 2>/dev/null\` in #(
- *posix*) :
- set -o posix ;; #(
- *) :
- ;;
-esac
-fi
-"
- as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
- exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1"
- as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
- as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
- eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
- test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1"
- if (eval "$as_required") 2>/dev/null; then :
- as_have_required=yes
-else
- as_have_required=no
-fi
- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- as_found=:
- case $as_dir in #(
- /*)
- for as_base in sh bash ksh sh5; do
- # Try only shells that exist, to save several forks.
- as_shell=$as_dir/$as_base
- if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
- CONFIG_SHELL=$as_shell as_have_required=yes
- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
- break 2
-fi
-fi
- done;;
- esac
- as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
- CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
- if test "x$CONFIG_SHELL" != x; then :
- # We cannot yet assume a decent shell, so we have to provide a
- # neutralization value for shells without unset; and this also
- # works around shells that cannot unset nonexistent variables.
- BASH_ENV=/dev/null
- ENV=/dev/null
- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
- export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
- if test x$as_have_required = xno; then :
- $as_echo "$0: This script requires a shell more modern than all"
- $as_echo "$0: the shells that I found on your system."
- if test x${ZSH_VERSION+set} = xset ; then
- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
- $as_echo "$0: be upgraded to zsh 4.3.4 or later."
- else
- $as_echo "$0: Please tell

and
-$0:

about your system, including any
-$0: error possibly output before this message. Then install
-$0: a modern shell, or manually run the script under such a
-$0: shell if you do have one."
- fi
- exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
- { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
- return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
- set +e
- as_fn_set_status $1
- exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || eval $as_mkdir_p || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
- eval 'as_fn_append ()
- {
- eval $1+=\$2
- }'
-else
- as_fn_append ()
- {
- eval $1=\$$1\$2
- }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
- eval 'as_fn_arith ()
- {
- as_val=$(( $* ))
- }'
-else
- as_fn_arith ()
- {
- as_val=`expr "$@" || test $? -eq 1`
- }
-fi # as_fn_arith
-
-
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
-as_fn_error ()
-{
- as_status=$?; test $as_status -eq 0 && as_status=1
- if test "$3"; then
- as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
- fi
- $as_echo "$as_me: error: $1" >&2
- as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
- as_lineno_1=$LINENO as_lineno_1a=$LINENO
- as_lineno_2=$LINENO as_lineno_2a=$LINENO
- eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
- test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
- # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
- sed -n '
- p
- /[$]LINENO/=
- ' <$as_myself |
- sed '
- s/[$]LINENO.*/&-/
- t lineno
- b
- :lineno
- N
- :loop
- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensitive to this).
- . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
- case `echo 'xy\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- xy) ECHO_C='\c';;
- *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
- ECHO_T=' ';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -p'
- fi
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p='mkdir -p "$as_dir"'
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='NDT'
-PACKAGE_TARNAME='ndt'
-PACKAGE_VERSION='3.6.4'
-PACKAGE_STRING='NDT 3.6.4'
-'
-PACKAGE_URL=''
-
-ac_unique_file="src/analyze.c"
-enable_option_checking=no
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-# include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_subst_vars='am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-ac_aux_dir
-LIBOBJS
-HAVE_GCJ_FALSE
-HAVE_GCJ_TRUE
-SGCJ
-am__fastdepGCJ_FALSE
-am__fastdepGCJ_TRUE
-GCJDEPMODE
-GCJFLAGS
-ac_ct_GCJ
-GCJ
-LN_S
-NDTJARFLAG
-NDTJAR
-NDTGCJFLAGS
-TOP_BUILD_DIRS
-ZLIB
-NDTINCDIR
-NDTLIBDIR
-NDTLIBS
-NDTLDFLAGS
-NDTINCS
-LINKED_ODBCLIB
-INCLUDED_PCAPLIB
-LINKED_PCAPLIB
-INCLUDED_WEB100LIB
-LINKED_WEB100LIB
-HAVE_ZLIB_H_FALSE
-HAVE_ZLIB_H_TRUE
-HAVE_Z_FALSE
-HAVE_Z_TRUE
-HAVE_PCAP_H_FALSE
-HAVE_PCAP_H_TRUE
-EGREP
-GREP
-CPP
-HAVE_WEB100_FALSE
-HAVE_WEB100_TRUE
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-I2UTILINCS
-I2UTILLIBMAKE
-I2UTILLIBDEPS
-I2UTILLIBS
-I2UTILLDFLAGS
-subdirs
-am__untar
-am__tar
-AMTAR
-am__leading_dot
-SET_MAKE
-AWK
-mkdir_p
-MKDIR_P
-INSTALL_STRIP_PROGRAM
-STRIP
-install_sh
-MAKEINFO
-AUTOHEADER
-AUTOMAKE
-AUTOCONF
-ACLOCAL
-VERSION
-PACKAGE
-CYGPATH_W
-am__isrc
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_debug
-enable_experimental
-enable_database
-with_I2util
-enable_dependency_tracking
-'
- ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP'
-ac_subdirs_all='I2util'
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval $ac_prev=\$ac_option
- ac_prev=
- continue
- fi
-
- case $ac_option in
- *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
- *) ac_optarg=yes ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case $ac_dashdash$ac_option in
- --)
- ac_dashdash=yes ;;
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir=$ac_optarg ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build_alias ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build_alias=$ac_optarg ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file=$ac_optarg ;;
-
- --config-cache | -C)
- cache_file=config.cache ;;
-
- -datadir | --datadir | --datadi | --datad)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=*)
- datadir=$ac_optarg ;;
-
- -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
- | --dataroo | --dataro | --datar)
- ac_prev=datarootdir ;;
- -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
- | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
- datarootdir=$ac_optarg ;;
-
- -disable-* | --disable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error "invalid feature name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=no ;;
-
- -docdir | --docdir | --docdi | --doc | --do)
- ac_prev=docdir ;;
- -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
- docdir=$ac_optarg ;;
-
- -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
- ac_prev=dvidir ;;
- -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
- dvidir=$ac_optarg ;;
-
- -enable-* | --enable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error "invalid feature name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=\$ac_optarg ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix=$ac_optarg ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he | -h)
- ac_init_help=long ;;
- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
- ac_init_help=recursive ;;
- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
- ac_init_help=short ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host_alias ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host_alias=$ac_optarg ;;
-
- -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
- ac_prev=htmldir ;;
- -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
- | --ht=*)
- htmldir=$ac_optarg ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir=$ac_optarg ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir=$ac_optarg ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir=$ac_optarg ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir=$ac_optarg ;;
-
- -localedir | --localedir | --localedi | --localed | --locale)
- ac_prev=localedir ;;
- -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
- localedir=$ac_optarg ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst | --locals)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
- localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir=$ac_optarg ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c | -n)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir=$ac_optarg ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix=$ac_optarg ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix=$ac_optarg ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix=$ac_optarg ;;
-
- -program-transform-name | --program-transform-name \
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/doc/Makefile.in Sun May 8 04:04:21 2011
+++ /dev/null
@@ -1,527 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-#########################################################################
-# #
-# Copyright (C) 2004 #
-# Internet2 #
-# All Rights Reserved #
-# #
-#########################################################################
-#
-# File: Makefile.am
-#
-# Author: Jeff Boote
-# Internet2
-#
-# Date: Tue Feb 17 11:08:20 MST 2004
-#
-# Description:
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-subdir = doc
-DIST_COMMON = $(dist_man1_MANS) $(dist_man5_MANS) $(dist_man8_MANS) \
- $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-man1dir = $(mandir)/man1
-am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" \
- "$(DESTDIR)$(man8dir)"
-man5dir = $(mandir)/man5
-man8dir = $(mandir)/man8
-NROFF = nroff
-MANS = $(dist_man1_MANS) $(dist_man5_MANS) $(dist_man8_MANS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GCJ = @GCJ@
-GCJDEPMODE = @GCJDEPMODE@
-GCJFLAGS = @GCJFLAGS@
-GREP = @GREP@
-I2UTILINCS = @I2UTILINCS@
-I2UTILLDFLAGS = @I2UTILLDFLAGS@
-I2UTILLIBDEPS = @I2UTILLIBDEPS@
-I2UTILLIBMAKE = @I2UTILLIBMAKE@
-I2UTILLIBS = @I2UTILLIBS@
-INCLUDED_PCAPLIB = @INCLUDED_PCAPLIB@
-INCLUDED_WEB100LIB = @INCLUDED_WEB100LIB@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LINKED_ODBCLIB = @LINKED_ODBCLIB@
-LINKED_PCAPLIB = @LINKED_PCAPLIB@
-LINKED_WEB100LIB = @LINKED_WEB100LIB@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NDTGCJFLAGS = @NDTGCJFLAGS@
-NDTINCDIR = @NDTINCDIR@
-NDTINCS = @NDTINCS@
-NDTJAR = @NDTJAR@
-NDTJARFLAG = @NDTJARFLAG@
-NDTLDFLAGS = @NDTLDFLAGS@
-NDTLIBDIR = @NDTLIBDIR@
-NDTLIBS = @NDTLIBS@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-SET_MAKE = @SET_MAKE@
-SGCJ = @SGCJ@
-SHELL = @SHELL@
-STRIP = @STRIP@
-TOP_BUILD_DIRS = @TOP_BUILD_DIRS@
-VERSION = @VERSION@
-ZLIB = @ZLIB@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_aux_dir = @ac_aux_dir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_GCJ = @ac_ct_GCJ@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-subdirs = @subdirs@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-dist_man1_MANS = web100clt.man analyze.man tr-mkmap.man viewtrace.man genplot.man
-dist_man5_MANS = ndt.conf.man
-dist_man8_MANS = web100srv.man fakewww.man
-
-# EXTRA_DIST = $(man1_MANS) $(man5_MANS) $(man8_MANS)
-EXTRA_DIST = index.html
-
-# TODO
-# Build html versions of man pages and include them in dist?
-# SUFFIXES = .man .man.html
-# .man.man.html:
-# man2html -blah_args
-# dist-hook:
-SUFFIXES = .man .man.html
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .man .man.html
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu doc/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-man1: $(dist_man1_MANS)
- @$(NORMAL_INSTALL)
- test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list='$(dist_man1_MANS)'; test -n "$(man1dir)" || exit 0; \
- { for i in $$list; do echo "$$i"; done; \
- } | while read p; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; echo "$$p"; \
- done | \
- sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
- sed 'N;N;s,\n, ,g' | { \
- list=; while read file base inst; do \
- if test "$$base" = "$$inst"; then list="$$list $$file"; else \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit
$$?; \
- fi; \
- done; \
- for i in $$list; do echo "$$i"; done | $(am__base_list) | \
- while read files; do \
- test -z "$$files" || { \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
- done; }
-
-uninstall-man1:
- @$(NORMAL_UNINSTALL)
- @list='$(dist_man1_MANS)'; test -n "$(man1dir)" || exit 0; \
- files=`{ for i in $$list; do echo "$$i"; done; \
- } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- test -z "$$files" || { \
- echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
-install-man5: $(dist_man5_MANS)
- @$(NORMAL_INSTALL)
- test -z "$(man5dir)" || $(MKDIR_P) "$(DESTDIR)$(man5dir)"
- @list='$(dist_man5_MANS)'; test -n "$(man5dir)" || exit 0; \
- { for i in $$list; do echo "$$i"; done; \
- } | while read p; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; echo "$$p"; \
- done | \
- sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
- sed 'N;N;s,\n, ,g' | { \
- list=; while read file base inst; do \
- if test "$$base" = "$$inst"; then list="$$list $$file"; else \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit
$$?; \
- fi; \
- done; \
- for i in $$list; do echo "$$i"; done | $(am__base_list) | \
- while read files; do \
- test -z "$$files" || { \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \
- done; }
-
-uninstall-man5:
- @$(NORMAL_UNINSTALL)
- @list='$(dist_man5_MANS)'; test -n "$(man5dir)" || exit 0; \
- files=`{ for i in $$list; do echo "$$i"; done; \
- } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- test -z "$$files" || { \
- echo " ( cd '$(DESTDIR)$(man5dir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(man5dir)" && rm -f $$files; }
-install-man8: $(dist_man8_MANS)
- @$(NORMAL_INSTALL)
- test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)"
- @list='$(dist_man8_MANS)'; test -n "$(man8dir)" || exit 0; \
- { for i in $$list; do echo "$$i"; done; \
- } | while read p; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; echo "$$p"; \
- done | \
- sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
- sed 'N;N;s,\n, ,g' | { \
- list=; while read file base inst; do \
- if test "$$base" = "$$inst"; then list="$$list $$file"; else \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit
$$?; \
- fi; \
- done; \
- for i in $$list; do echo "$$i"; done | $(am__base_list) | \
- while read files; do \
- test -z "$$files" || { \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \
- done; }
-
-uninstall-man8:
- @$(NORMAL_UNINSTALL)
- @list='$(dist_man8_MANS)'; test -n "$(man8dir)" || exit 0; \
- files=`{ for i in $$list; do echo "$$i"; done; \
- } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- test -z "$$files" || { \
- echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(man8dir)" && rm -f $$files; }
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- @list='$(MANS)'; if test -n "$$list"; then \
- list=`for p in $$list; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
- if test -n "$$list" && \
- grep 'ab help2man is required to generate this page' $$list
/dev/null; then \
- echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
- grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
- echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
- echo " typically \`make maintainer-clean' will remove them"
&2; \
- exit 1; \
- else :; fi; \
- else :; fi
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir);
fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(MANS)
-installdirs:
- for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s
\
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-man
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man: install-man1 install-man5 install-man8
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-man
-
-uninstall-man: uninstall-man1 uninstall-man5 uninstall-man8
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic distclean \
- distclean-generic distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-man1 install-man5 install-man8 install-pdf \
- install-pdf-am install-ps install-ps-am install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
- pdf-am ps ps-am uninstall uninstall-am uninstall-man \
- uninstall-man1 uninstall-man5 uninstall-man8
-
-
-.man.man.html:
- cp $< $@
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
=======================================
--- /trunk/janalyze/Makefile.in Sun May 8 04:04:21 2011
+++ /dev/null
@@ -1,927 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-#########################################################################
-# #
-# Copyright (C) 2007 #
-# Internet2 #
-# All Rights Reserved #
-# #
-#########################################################################
-#
-# File: Makefile.am
-#
-# Author: Jakub S³awiñski
-#
-# Date: Wed Oct 10 23:33:27 CEST 2007
-#
-# Description:
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-noinst_PROGRAMS = JAnalyze.jar$(EXEEXT)
-subdir = janalyze
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am__dirstamp = $(am__leading_dot)dirstamp
-am__objects_1 = src/JAnalyze.$(OBJEXT) src/DBConfFrame.$(OBJEXT) \
- src/FilterFrame.$(OBJEXT) src/Helpers.$(OBJEXT) \
- src/LoadingDBFrame.$(OBJEXT) src/LoadingFrame.$(OBJEXT) \
- src/MaxPeakInfo.$(OBJEXT) src/MinPeakInfo.$(OBJEXT) \
- src/PeakInfo.$(OBJEXT) src/PropertyListener.$(OBJEXT) \
- src/ResultsContainer.$(OBJEXT) src/ResultsList.$(OBJEXT) \
- src/SimpleTextPane.$(OBJEXT) src/SnaplogFrame.$(OBJEXT) \
- src/SwingWorker.$(OBJEXT)
-am_JAnalyze_jar_OBJECTS = $(am__objects_1)
-JAnalyze_jar_OBJECTS = $(am_JAnalyze_jar_OBJECTS)
-JAnalyze_jar_LDADD = $(LDADD)
-DEFAULT_INCLUDES =
-I.@am__isrc@
-I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-GCJCOMPILE = $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS)
-GCJLD = $(GCJ)
-SOURCES = $(JAnalyze_jar_SOURCES)
-DIST_SOURCES = $(JAnalyze_jar_SOURCES)
-JAVAC = javac
-JAVAROOT = $(top_builddir)
-am__installdirs = "$(DESTDIR)$(JAnalyzedir)" "$(DESTDIR)$(ndtdir)"
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-DATA = $(ndt_DATA)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GCJ = @GCJ@
-GCJDEPMODE = @GCJDEPMODE@
-GCJFLAGS =
-GREP = @GREP@
-I2UTILINCS = @I2UTILINCS@
-I2UTILLDFLAGS = @I2UTILLDFLAGS@
-I2UTILLIBDEPS = @I2UTILLIBDEPS@
-I2UTILLIBMAKE = @I2UTILLIBMAKE@
-I2UTILLIBS = @I2UTILLIBS@
-INCLUDED_PCAPLIB = @INCLUDED_PCAPLIB@
-INCLUDED_WEB100LIB = @INCLUDED_WEB100LIB@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LINKED_ODBCLIB = @LINKED_ODBCLIB@
-LINKED_PCAPLIB = @LINKED_PCAPLIB@
-LINKED_WEB100LIB = @LINKED_WEB100LIB@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NDTGCJFLAGS = -cp external:src -d bin
-NDTINCDIR = @NDTINCDIR@
-NDTINCS = @NDTINCS@
-NDTJAR = @NDTJAR@
-NDTJARFLAG = @NDTJARFLAG@
-NDTLDFLAGS = @NDTLDFLAGS@
-NDTLIBDIR = @NDTLIBDIR@
-NDTLIBS = @NDTLIBS@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-SET_MAKE = @SET_MAKE@
-SGCJ = @SGCJ@
-SHELL = @SHELL@
-STRIP = @STRIP@
-TOP_BUILD_DIRS = @TOP_BUILD_DIRS@
-VERSION = @VERSION@
-ZLIB = @ZLIB@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_aux_dir = @ac_aux_dir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_GCJ = @ac_ct_GCJ@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-subdirs = @subdirs@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-GCJLINK = $(GCJLD)
-CLASSPATH_ENV =
-TEMPDIRS = bin dist
-ndtdir = $(prefix)/ndt
-ndt_DATA = JAnalyze.jar
-JAnalyzedir = $(ndtdir)/janalyze
-JAnalyze_JAVA = src/JAnalyze.java src/DBConfFrame.java src/FilterFrame.java \
- src/Helpers.java src/LoadingDBFrame.java
src/LoadingFrame.java \
- src/MaxPeakInfo.java src/MinPeakInfo.java
src/PeakInfo.java \
- src/PropertyListener.java
src/ResultsContainer.java \
- src/ResultsList.java src/SimpleTextPane.java
src/SnaplogFrame.java \
- src/SwingWorker.java
-
-JAnalyze_jar_SOURCES = $(JAnalyze_JAVA)
-EXTRA_DIST = Readme MANIFEST.MF ./external/de/progra/charting/test/TestChartDataModel.class \
-
./external/de/progra/charting/test/FunctionPlotApplet.class \
- ./external/de/progra/charting/test/ImageFilter.class
\
-
./external/de/progra/charting/test/GraphFrame$1.class \
- ./external/de/progra/charting/test/TestChart.class \
-
./external/de/progra/charting/test/GraphFrame$2.class \
-
./external/de/progra/charting/test/FunctionPlotApplet$1.class \
-
./external/de/progra/charting/test/GraphFrame$3.class \
- ./external/de/progra/charting/test/GraphFrame.class \
-
./external/de/progra/charting/PointToPixelTranslator.class \
-
./external/de/progra/charting/event/ChartDataModelListener.class \
-
./external/de/progra/charting/event/ChartDataModelEvent.class \
- ./external/de/progra/charting/Axis.class \
-
./external/de/progra/charting/model/ObjectChartDataModel.class \
-
./external/de/progra/charting/model/AbstractChartDataModel.class \
- ./external/de/progra/charting/model/DefaultChartDataModelConstraints.class \
-
./external/de/progra/charting/model/EditableDataSet.class \
-
./external/de/progra/charting/model/JDBCPlotterException.class \
-
./external/de/progra/charting/model/DefaultDataSet.class \
- ./external/de/progra/charting/model/StackedChartDataModelConstraints.class \
- ./external/de/progra/charting/model/DataSet.class \
-
./external/de/progra/charting/model/JDBCPlotter.class \
-
./external/de/progra/charting/model/ChartDataModel.class \
-
./external/de/progra/charting/model/DefaultChartDataModel.class \
-
./external/de/progra/charting/model/ChartDataModelConstraints.class \
-
./external/de/progra/charting/model/EditableChartDataModel.class \
-
./external/de/progra/charting/model/FunctionPlotter.class \
- ./external/de/progra/charting/swing/ChartPanel.class
\
- ./external/de/progra/charting/DefaultChart.class \
-
./external/de/progra/charting/servlet/ChartServlet.class \
- ./external/de/progra/charting/CoordSystem$1.class \
- ./external/de/progra/charting/Chart.class \
- ./external/de/progra/charting/ChartUtilities.class \
- ./external/de/progra/charting/CoordSystem.class \
-
./external/de/progra/charting/render/BarChartRenderer.class \
-
./external/de/progra/charting/render/ChartRenderingHints.class \
-
./external/de/progra/charting/render/shape/Diamond2D.class \
-
./external/de/progra/charting/render/shape/Triangle2D.class \
-
./external/de/progra/charting/render/shape/Diamond2D$1.class \
-
./external/de/progra/charting/render/shape/Triangle2D$1.class \
-
./external/de/progra/charting/render/AbstractChartRenderer.class \
-
./external/de/progra/charting/render/StackedBarChartRenderer.class \
-
./external/de/progra/charting/render/PlotChartRenderer.class \
-
./external/de/progra/charting/render/RowColorModel.class \
-
./external/de/progra/charting/render/AbstractRenderer.class \
-
./external/de/progra/charting/render/InterpolationChartRenderer.class \
- ./external/de/progra/charting/render/Renderer.class \
-
./external/de/progra/charting/render/LineChartRenderer.class \
-
./external/de/progra/charting/render/PieChartRenderer.class \
-
./external/de/progra/charting/render/RadarChartRenderer.class \
- ./external/de/progra/charting/ChartEncoder.class \
- ./external/de/progra/charting/Legend.class \
- ./external/de/progra/charting/AbstractChart.class \
-
./external/de/progra/charting/CoordSystemUtilities.class \
- ./external/de/progra/charting/Title.class \
- ./external/de/progra/charting/EncodingException.class
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .java .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu janalyze/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu janalyze/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstPROGRAMS:
- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
-src/$(am__dirstamp):
- @$(MKDIR_P) src
- @: > src/$(am__dirstamp)
-src/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) src/$(DEPDIR)
- @: > src/$(DEPDIR)/$(am__dirstamp)
-src/JAnalyze.$(OBJEXT): src/$(am__dirstamp) \
- src/$(DEPDIR)/$(am__dirstamp)
-src/DBConfFrame.$(OBJEXT): src/$(am__dirstamp) \
- src/$(DEPDIR)/$(am__dirstamp)
-src/FilterFrame.$(OBJEXT): src/$(am__dirstamp) \
- src/$(DEPDIR)/$(am__dirstamp)
-src/Helpers.$(OBJEXT): src/$(am__dirstamp) \
- src/$(DEPDIR)/$(am__dirstamp)
-src/LoadingDBFrame.$(OBJEXT): src/$(am__dirstamp) \
- src/$(DEPDIR)/$(am__dirstamp)
-src/LoadingFrame.$(OBJEXT): src/$(am__dirstamp) \
- src/$(DEPDIR)/$(am__dirstamp)
-src/MaxPeakInfo.$(OBJEXT): src/$(am__dirstamp) \
- src/$(DEPDIR)/$(am__dirstamp)
-src/MinPeakInfo.$(OBJEXT): src/$(am__dirstamp) \
- src/$(DEPDIR)/$(am__dirstamp)
-src/PeakInfo.$(OBJEXT): src/$(am__dirstamp) \
- src/$(DEPDIR)/$(am__dirstamp)
-src/PropertyListener.$(OBJEXT): src/$(am__dirstamp) \
- src/$(DEPDIR)/$(am__dirstamp)
-src/ResultsContainer.$(OBJEXT): src/$(am__dirstamp) \
- src/$(DEPDIR)/$(am__dirstamp)
-src/ResultsList.$(OBJEXT): src/$(am__dirstamp) \
- src/$(DEPDIR)/$(am__dirstamp)
-src/SimpleTextPane.$(OBJEXT): src/$(am__dirstamp) \
- src/$(DEPDIR)/$(am__dirstamp)
-src/SnaplogFrame.$(OBJEXT): src/$(am__dirstamp) \
- src/$(DEPDIR)/$(am__dirstamp)
-src/SwingWorker.$(OBJEXT): src/$(am__dirstamp) \
- src/$(DEPDIR)/$(am__dirstamp)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
- -rm -f src/DBConfFrame.$(OBJEXT)
- -rm -f src/FilterFrame.$(OBJEXT)
- -rm -f src/Helpers.$(OBJEXT)
- -rm -f src/JAnalyze.$(OBJEXT)
- -rm -f src/LoadingDBFrame.$(OBJEXT)
- -rm -f src/LoadingFrame.$(OBJEXT)
- -rm -f src/MaxPeakInfo.$(OBJEXT)
- -rm -f src/MinPeakInfo.$(OBJEXT)
- -rm -f src/PeakInfo.$(OBJEXT)
- -rm -f src/PropertyListener.$(OBJEXT)
- -rm -f src/ResultsContainer.$(OBJEXT)
- -rm -f src/ResultsList.$(OBJEXT)
- -rm -f src/SimpleTextPane.$(OBJEXT)
- -rm -f src/SnaplogFrame.$(OBJEXT)
- -rm -f src/SwingWorker.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DBConfFrame.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/FilterFrame.Po@am__quote@
-@AMDEP_TRUE@@am__include@

@am__quote@src/$(DEPDIR)/Helpers.Po@am__quote@
-@AMDEP_TRUE@@am__include@

@am__quote@src/$(DEPDIR)/JAnalyze.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/LoadingDBFrame.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/LoadingFrame.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/MaxPeakInfo.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/MinPeakInfo.Po@am__quote@
-@AMDEP_TRUE@@am__include@

@am__quote@src/$(DEPDIR)/PeakInfo.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/PropertyListener.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ResultsContainer.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ResultsList.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/SimpleTextPane.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/SnaplogFrame.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/SwingWorker.Po@am__quote@
-
-.java.o:
-@am__fastdepGCJ_TRUE@ $(GCJCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepGCJ_TRUE@
$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@
$(GCJCOMPILE) -c -o $@ $<
-
-.java.obj:
-@am__fastdepGCJ_TRUE@ $(GCJCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepGCJ_TRUE@
$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@
$(GCJCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-src/JAnalyze.o: src/JAnalyze.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/JAnalyze.o -MD -MP -MF src/$(DEPDIR)/JAnalyze.Tpo -c -o src/JAnalyze.o `test -f 'src/JAnalyze.java' || echo '$(srcdir)/'`src/JAnalyze.java
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/JAnalyze.Tpo src/$(DEPDIR)/JAnalyze.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/JAnalyze.java' object='src/JAnalyze.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/JAnalyze.o `test -f 'src/JAnalyze.java' || echo '$(srcdir)/'`src/JAnalyze.java
-
-src/JAnalyze.obj: src/JAnalyze.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/JAnalyze.obj -MD -MP -MF src/$(DEPDIR)/JAnalyze.Tpo -c -o src/JAnalyze.obj `if test -f 'src/JAnalyze.java'; then $(CYGPATH_W) 'src/JAnalyze.java'; else $(CYGPATH_W) '$(srcdir)/src/JAnalyze.java'; fi`
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/JAnalyze.Tpo src/$(DEPDIR)/JAnalyze.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/JAnalyze.java' object='src/JAnalyze.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/JAnalyze.obj `if test -f 'src/JAnalyze.java'; then $(CYGPATH_W) 'src/JAnalyze.java'; else $(CYGPATH_W) '$(srcdir)/src/JAnalyze.java'; fi`
-
-src/DBConfFrame.o: src/DBConfFrame.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/DBConfFrame.o -MD -MP -MF src/$(DEPDIR)/DBConfFrame.Tpo -c -o src/DBConfFrame.o `test -f 'src/DBConfFrame.java' || echo '$(srcdir)/'`src/DBConfFrame.java
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/DBConfFrame.Tpo src/$(DEPDIR)/DBConfFrame.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/DBConfFrame.java' object='src/DBConfFrame.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/DBConfFrame.o `test -f 'src/DBConfFrame.java' || echo '$(srcdir)/'`src/DBConfFrame.java
-
-src/DBConfFrame.obj: src/DBConfFrame.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/DBConfFrame.obj -MD -MP -MF src/$(DEPDIR)/DBConfFrame.Tpo -c -o src/DBConfFrame.obj `if test -f 'src/DBConfFrame.java'; then $(CYGPATH_W) 'src/DBConfFrame.java'; else $(CYGPATH_W) '$(srcdir)/src/DBConfFrame.java'; fi`
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/DBConfFrame.Tpo src/$(DEPDIR)/DBConfFrame.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/DBConfFrame.java' object='src/DBConfFrame.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/DBConfFrame.obj `if test -f 'src/DBConfFrame.java'; then $(CYGPATH_W) 'src/DBConfFrame.java'; else $(CYGPATH_W) '$(srcdir)/src/DBConfFrame.java'; fi`
-
-src/FilterFrame.o: src/FilterFrame.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/FilterFrame.o -MD -MP -MF src/$(DEPDIR)/FilterFrame.Tpo -c -o src/FilterFrame.o `test -f 'src/FilterFrame.java' || echo '$(srcdir)/'`src/FilterFrame.java
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/FilterFrame.Tpo src/$(DEPDIR)/FilterFrame.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/FilterFrame.java' object='src/FilterFrame.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/FilterFrame.o `test -f 'src/FilterFrame.java' || echo '$(srcdir)/'`src/FilterFrame.java
-
-src/FilterFrame.obj: src/FilterFrame.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/FilterFrame.obj -MD -MP -MF src/$(DEPDIR)/FilterFrame.Tpo -c -o src/FilterFrame.obj `if test -f 'src/FilterFrame.java'; then $(CYGPATH_W) 'src/FilterFrame.java'; else $(CYGPATH_W) '$(srcdir)/src/FilterFrame.java'; fi`
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/FilterFrame.Tpo src/$(DEPDIR)/FilterFrame.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/FilterFrame.java' object='src/FilterFrame.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/FilterFrame.obj `if test -f 'src/FilterFrame.java'; then $(CYGPATH_W) 'src/FilterFrame.java'; else $(CYGPATH_W) '$(srcdir)/src/FilterFrame.java'; fi`
-
-src/Helpers.o: src/Helpers.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/Helpers.o -MD -MP -MF src/$(DEPDIR)/Helpers.Tpo -c -o src/Helpers.o `test -f 'src/Helpers.java' || echo '$(srcdir)/'`src/Helpers.java
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/Helpers.Tpo src/$(DEPDIR)/Helpers.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/Helpers.java' object='src/Helpers.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/Helpers.o `test -f 'src/Helpers.java' || echo '$(srcdir)/'`src/Helpers.java
-
-src/Helpers.obj: src/Helpers.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/Helpers.obj -MD -MP -MF src/$(DEPDIR)/Helpers.Tpo -c -o src/Helpers.obj `if test -f 'src/Helpers.java'; then $(CYGPATH_W) 'src/Helpers.java'; else $(CYGPATH_W) '$(srcdir)/src/Helpers.java'; fi`
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/Helpers.Tpo src/$(DEPDIR)/Helpers.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/Helpers.java' object='src/Helpers.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/Helpers.obj `if test -f 'src/Helpers.java'; then $(CYGPATH_W) 'src/Helpers.java'; else $(CYGPATH_W) '$(srcdir)/src/Helpers.java'; fi`
-
-src/LoadingDBFrame.o: src/LoadingDBFrame.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/LoadingDBFrame.o -MD -MP -MF src/$(DEPDIR)/LoadingDBFrame.Tpo -c -o src/LoadingDBFrame.o `test -f 'src/LoadingDBFrame.java' || echo '$(srcdir)/'`src/LoadingDBFrame.java
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/LoadingDBFrame.Tpo src/$(DEPDIR)/LoadingDBFrame.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/LoadingDBFrame.java' object='src/LoadingDBFrame.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/LoadingDBFrame.o `test -f 'src/LoadingDBFrame.java' || echo '$(srcdir)/'`src/LoadingDBFrame.java
-
-src/LoadingDBFrame.obj: src/LoadingDBFrame.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/LoadingDBFrame.obj -MD -MP -MF src/$(DEPDIR)/LoadingDBFrame.Tpo -c -o src/LoadingDBFrame.obj `if test -f 'src/LoadingDBFrame.java'; then $(CYGPATH_W) 'src/LoadingDBFrame.java'; else $(CYGPATH_W) '$(srcdir)/src/LoadingDBFrame.java'; fi`
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/LoadingDBFrame.Tpo src/$(DEPDIR)/LoadingDBFrame.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/LoadingDBFrame.java' object='src/LoadingDBFrame.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/LoadingDBFrame.obj `if test -f 'src/LoadingDBFrame.java'; then $(CYGPATH_W) 'src/LoadingDBFrame.java'; else $(CYGPATH_W) '$(srcdir)/src/LoadingDBFrame.java'; fi`
-
-src/LoadingFrame.o: src/LoadingFrame.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/LoadingFrame.o -MD -MP -MF src/$(DEPDIR)/LoadingFrame.Tpo -c -o src/LoadingFrame.o `test -f 'src/LoadingFrame.java' || echo '$(srcdir)/'`src/LoadingFrame.java
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/LoadingFrame.Tpo src/$(DEPDIR)/LoadingFrame.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/LoadingFrame.java' object='src/LoadingFrame.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/LoadingFrame.o `test -f 'src/LoadingFrame.java' || echo '$(srcdir)/'`src/LoadingFrame.java
-
-src/LoadingFrame.obj: src/LoadingFrame.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/LoadingFrame.obj -MD -MP -MF src/$(DEPDIR)/LoadingFrame.Tpo -c -o src/LoadingFrame.obj `if test -f 'src/LoadingFrame.java'; then $(CYGPATH_W) 'src/LoadingFrame.java'; else $(CYGPATH_W) '$(srcdir)/src/LoadingFrame.java'; fi`
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/LoadingFrame.Tpo src/$(DEPDIR)/LoadingFrame.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/LoadingFrame.java' object='src/LoadingFrame.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/LoadingFrame.obj `if test -f 'src/LoadingFrame.java'; then $(CYGPATH_W) 'src/LoadingFrame.java'; else $(CYGPATH_W) '$(srcdir)/src/LoadingFrame.java'; fi`
-
-src/MaxPeakInfo.o: src/MaxPeakInfo.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/MaxPeakInfo.o -MD -MP -MF src/$(DEPDIR)/MaxPeakInfo.Tpo -c -o src/MaxPeakInfo.o `test -f 'src/MaxPeakInfo.java' || echo '$(srcdir)/'`src/MaxPeakInfo.java
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/MaxPeakInfo.Tpo src/$(DEPDIR)/MaxPeakInfo.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/MaxPeakInfo.java' object='src/MaxPeakInfo.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/MaxPeakInfo.o `test -f 'src/MaxPeakInfo.java' || echo '$(srcdir)/'`src/MaxPeakInfo.java
-
-src/MaxPeakInfo.obj: src/MaxPeakInfo.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/MaxPeakInfo.obj -MD -MP -MF src/$(DEPDIR)/MaxPeakInfo.Tpo -c -o src/MaxPeakInfo.obj `if test -f 'src/MaxPeakInfo.java'; then $(CYGPATH_W) 'src/MaxPeakInfo.java'; else $(CYGPATH_W) '$(srcdir)/src/MaxPeakInfo.java'; fi`
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/MaxPeakInfo.Tpo src/$(DEPDIR)/MaxPeakInfo.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/MaxPeakInfo.java' object='src/MaxPeakInfo.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/MaxPeakInfo.obj `if test -f 'src/MaxPeakInfo.java'; then $(CYGPATH_W) 'src/MaxPeakInfo.java'; else $(CYGPATH_W) '$(srcdir)/src/MaxPeakInfo.java'; fi`
-
-src/MinPeakInfo.o: src/MinPeakInfo.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/MinPeakInfo.o -MD -MP -MF src/$(DEPDIR)/MinPeakInfo.Tpo -c -o src/MinPeakInfo.o `test -f 'src/MinPeakInfo.java' || echo '$(srcdir)/'`src/MinPeakInfo.java
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/MinPeakInfo.Tpo src/$(DEPDIR)/MinPeakInfo.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/MinPeakInfo.java' object='src/MinPeakInfo.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/MinPeakInfo.o `test -f 'src/MinPeakInfo.java' || echo '$(srcdir)/'`src/MinPeakInfo.java
-
-src/MinPeakInfo.obj: src/MinPeakInfo.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/MinPeakInfo.obj -MD -MP -MF src/$(DEPDIR)/MinPeakInfo.Tpo -c -o src/MinPeakInfo.obj `if test -f 'src/MinPeakInfo.java'; then $(CYGPATH_W) 'src/MinPeakInfo.java'; else $(CYGPATH_W) '$(srcdir)/src/MinPeakInfo.java'; fi`
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/MinPeakInfo.Tpo src/$(DEPDIR)/MinPeakInfo.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/MinPeakInfo.java' object='src/MinPeakInfo.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/MinPeakInfo.obj `if test -f 'src/MinPeakInfo.java'; then $(CYGPATH_W) 'src/MinPeakInfo.java'; else $(CYGPATH_W) '$(srcdir)/src/MinPeakInfo.java'; fi`
-
-src/PeakInfo.o: src/PeakInfo.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/PeakInfo.o -MD -MP -MF src/$(DEPDIR)/PeakInfo.Tpo -c -o src/PeakInfo.o `test -f 'src/PeakInfo.java' || echo '$(srcdir)/'`src/PeakInfo.java
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/PeakInfo.Tpo src/$(DEPDIR)/PeakInfo.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/PeakInfo.java' object='src/PeakInfo.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/PeakInfo.o `test -f 'src/PeakInfo.java' || echo '$(srcdir)/'`src/PeakInfo.java
-
-src/PeakInfo.obj: src/PeakInfo.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/PeakInfo.obj -MD -MP -MF src/$(DEPDIR)/PeakInfo.Tpo -c -o src/PeakInfo.obj `if test -f 'src/PeakInfo.java'; then $(CYGPATH_W) 'src/PeakInfo.java'; else $(CYGPATH_W) '$(srcdir)/src/PeakInfo.java'; fi`
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/PeakInfo.Tpo src/$(DEPDIR)/PeakInfo.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/PeakInfo.java' object='src/PeakInfo.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/PeakInfo.obj `if test -f 'src/PeakInfo.java'; then $(CYGPATH_W) 'src/PeakInfo.java'; else $(CYGPATH_W) '$(srcdir)/src/PeakInfo.java'; fi`
-
-src/PropertyListener.o: src/PropertyListener.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/PropertyListener.o -MD -MP -MF src/$(DEPDIR)/PropertyListener.Tpo -c -o src/PropertyListener.o `test -f 'src/PropertyListener.java' || echo '$(srcdir)/'`src/PropertyListener.java
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/PropertyListener.Tpo src/$(DEPDIR)/PropertyListener.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/PropertyListener.java' object='src/PropertyListener.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/PropertyListener.o `test -f 'src/PropertyListener.java' || echo '$(srcdir)/'`src/PropertyListener.java
-
-src/PropertyListener.obj: src/PropertyListener.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/PropertyListener.obj -MD -MP -MF src/$(DEPDIR)/PropertyListener.Tpo -c -o src/PropertyListener.obj `if test -f 'src/PropertyListener.java'; then $(CYGPATH_W) 'src/PropertyListener.java'; else $(CYGPATH_W) '$(srcdir)/src/PropertyListener.java'; fi`
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/PropertyListener.Tpo src/$(DEPDIR)/PropertyListener.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/PropertyListener.java' object='src/PropertyListener.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/PropertyListener.obj `if test -f 'src/PropertyListener.java'; then $(CYGPATH_W) 'src/PropertyListener.java'; else $(CYGPATH_W) '$(srcdir)/src/PropertyListener.java'; fi`
-
-src/ResultsContainer.o: src/ResultsContainer.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/ResultsContainer.o -MD -MP -MF src/$(DEPDIR)/ResultsContainer.Tpo -c -o src/ResultsContainer.o `test -f 'src/ResultsContainer.java' || echo '$(srcdir)/'`src/ResultsContainer.java
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/ResultsContainer.Tpo src/$(DEPDIR)/ResultsContainer.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/ResultsContainer.java' object='src/ResultsContainer.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/ResultsContainer.o `test -f 'src/ResultsContainer.java' || echo '$(srcdir)/'`src/ResultsContainer.java
-
-src/ResultsContainer.obj: src/ResultsContainer.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/ResultsContainer.obj -MD -MP -MF src/$(DEPDIR)/ResultsContainer.Tpo -c -o src/ResultsContainer.obj `if test -f 'src/ResultsContainer.java'; then $(CYGPATH_W) 'src/ResultsContainer.java'; else $(CYGPATH_W) '$(srcdir)/src/ResultsContainer.java'; fi`
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/ResultsContainer.Tpo src/$(DEPDIR)/ResultsContainer.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/ResultsContainer.java' object='src/ResultsContainer.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/ResultsContainer.obj `if test -f 'src/ResultsContainer.java'; then $(CYGPATH_W) 'src/ResultsContainer.java'; else $(CYGPATH_W) '$(srcdir)/src/ResultsContainer.java'; fi`
-
-src/ResultsList.o: src/ResultsList.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/ResultsList.o -MD -MP -MF src/$(DEPDIR)/ResultsList.Tpo -c -o src/ResultsList.o `test -f 'src/ResultsList.java' || echo '$(srcdir)/'`src/ResultsList.java
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/ResultsList.Tpo src/$(DEPDIR)/ResultsList.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/ResultsList.java' object='src/ResultsList.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/ResultsList.o `test -f 'src/ResultsList.java' || echo '$(srcdir)/'`src/ResultsList.java
-
-src/ResultsList.obj: src/ResultsList.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/ResultsList.obj -MD -MP -MF src/$(DEPDIR)/ResultsList.Tpo -c -o src/ResultsList.obj `if test -f 'src/ResultsList.java'; then $(CYGPATH_W) 'src/ResultsList.java'; else $(CYGPATH_W) '$(srcdir)/src/ResultsList.java'; fi`
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/ResultsList.Tpo src/$(DEPDIR)/ResultsList.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/ResultsList.java' object='src/ResultsList.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/ResultsList.obj `if test -f 'src/ResultsList.java'; then $(CYGPATH_W) 'src/ResultsList.java'; else $(CYGPATH_W) '$(srcdir)/src/ResultsList.java'; fi`
-
-src/SimpleTextPane.o: src/SimpleTextPane.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/SimpleTextPane.o -MD -MP -MF src/$(DEPDIR)/SimpleTextPane.Tpo -c -o src/SimpleTextPane.o `test -f 'src/SimpleTextPane.java' || echo '$(srcdir)/'`src/SimpleTextPane.java
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/SimpleTextPane.Tpo src/$(DEPDIR)/SimpleTextPane.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/SimpleTextPane.java' object='src/SimpleTextPane.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/SimpleTextPane.o `test -f 'src/SimpleTextPane.java' || echo '$(srcdir)/'`src/SimpleTextPane.java
-
-src/SimpleTextPane.obj: src/SimpleTextPane.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/SimpleTextPane.obj -MD -MP -MF src/$(DEPDIR)/SimpleTextPane.Tpo -c -o src/SimpleTextPane.obj `if test -f 'src/SimpleTextPane.java'; then $(CYGPATH_W) 'src/SimpleTextPane.java'; else $(CYGPATH_W) '$(srcdir)/src/SimpleTextPane.java'; fi`
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/SimpleTextPane.Tpo src/$(DEPDIR)/SimpleTextPane.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/SimpleTextPane.java' object='src/SimpleTextPane.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/SimpleTextPane.obj `if test -f 'src/SimpleTextPane.java'; then $(CYGPATH_W) 'src/SimpleTextPane.java'; else $(CYGPATH_W) '$(srcdir)/src/SimpleTextPane.java'; fi`
-
-src/SnaplogFrame.o: src/SnaplogFrame.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/SnaplogFrame.o -MD -MP -MF src/$(DEPDIR)/SnaplogFrame.Tpo -c -o src/SnaplogFrame.o `test -f 'src/SnaplogFrame.java' || echo '$(srcdir)/'`src/SnaplogFrame.java
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/SnaplogFrame.Tpo src/$(DEPDIR)/SnaplogFrame.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/SnaplogFrame.java' object='src/SnaplogFrame.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/SnaplogFrame.o `test -f 'src/SnaplogFrame.java' || echo '$(srcdir)/'`src/SnaplogFrame.java
-
-src/SnaplogFrame.obj: src/SnaplogFrame.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/SnaplogFrame.obj -MD -MP -MF src/$(DEPDIR)/SnaplogFrame.Tpo -c -o src/SnaplogFrame.obj `if test -f 'src/SnaplogFrame.java'; then $(CYGPATH_W) 'src/SnaplogFrame.java'; else $(CYGPATH_W) '$(srcdir)/src/SnaplogFrame.java'; fi`
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/SnaplogFrame.Tpo src/$(DEPDIR)/SnaplogFrame.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/SnaplogFrame.java' object='src/SnaplogFrame.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/SnaplogFrame.obj `if test -f 'src/SnaplogFrame.java'; then $(CYGPATH_W) 'src/SnaplogFrame.java'; else $(CYGPATH_W) '$(srcdir)/src/SnaplogFrame.java'; fi`
-
-src/SwingWorker.o: src/SwingWorker.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/SwingWorker.o -MD -MP -MF src/$(DEPDIR)/SwingWorker.Tpo -c -o src/SwingWorker.o `test -f 'src/SwingWorker.java' || echo '$(srcdir)/'`src/SwingWorker.java
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/SwingWorker.Tpo src/$(DEPDIR)/SwingWorker.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/SwingWorker.java' object='src/SwingWorker.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/SwingWorker.o `test -f 'src/SwingWorker.java' || echo '$(srcdir)/'`src/SwingWorker.java
-
-src/SwingWorker.obj: src/SwingWorker.java
-@am__fastdepGCJ_TRUE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -MT src/SwingWorker.obj -MD -MP -MF src/$(DEPDIR)/SwingWorker.Tpo -c -o src/SwingWorker.obj `if test -f 'src/SwingWorker.java'; then $(CYGPATH_W) 'src/SwingWorker.java'; else $(CYGPATH_W) '$(srcdir)/src/SwingWorker.java'; fi`
-@am__fastdepGCJ_TRUE@ $(am__mv) src/$(DEPDIR)/SwingWorker.Tpo src/$(DEPDIR)/SwingWorker.Po
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ source='src/SwingWorker.java' object='src/SwingWorker.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepGCJ_FALSE@ DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepGCJ_FALSE@ $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) -c -o src/SwingWorker.obj `if test -f 'src/SwingWorker.java'; then $(CYGPATH_W) 'src/SwingWorker.java'; else $(CYGPATH_W) '$(srcdir)/src/SwingWorker.java'; fi`
-
-classJAnalyze.stamp: $(JAnalyze_JAVA)
- @list1='$?'; list2=; if test -n "$$list1"; then \
- for p in $$list1; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- list2="$$list2 $$d$$p"; \
- done; \
- echo '$(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) '"$$list2"; \
- $(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) $$list2; \
- else :; fi
- echo timestamp > classJAnalyze.stamp
-
-uninstall-JAnalyzeJAVA:
- @$(NORMAL_UNINSTALL)
- @test -n "$(JAnalyze_JAVA)" && test -n "$(JAnalyzedir)" || exit 0; \
- set x *.class; shift; test "$$1" != "*.class" || exit 0; \
- echo " ( cd '$(DESTDIR)$(JAnalyzedir)' && rm -f" "$$@" ")"; \
- cd "$(DESTDIR)$(JAnalyzedir)" && rm -f "$$@"
-
-clean-JAnalyzeJAVA:
- -rm -f *.class classJAnalyze.stamp
-
-uninstall-ndtDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(ndt_DATA)'; test -n "$(ndtdir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(ndtdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(ndtdir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir);
fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS) classJAnalyze.stamp $(DATA)
-installdirs:
- for dir in "$(DESTDIR)$(JAnalyzedir)" "$(DESTDIR)$(ndtdir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s
\
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
- -rm -f src/$(DEPDIR)/$(am__dirstamp)
- -rm -f src/$(am__dirstamp)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-JAnalyzeJAVA clean-generic clean-noinstPROGRAMS \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf src/$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-JAnalyzeJAVA install-ndtDATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf src/$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-JAnalyzeJAVA uninstall-ndtDATA
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-JAnalyzeJAVA \
- clean-generic clean-noinstPROGRAMS ctags distclean \
- distclean-compile distclean-generic distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-JAnalyzeJAVA \
- install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-ndtDATA install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
- ps ps-am tags uninstall uninstall-JAnalyzeJAVA uninstall-am \
- uninstall-ndtDATA
-
-
-JAnalyze$(EXEEXT): $(JAnalyze_OBJECTS) $(JAnalyze_DEPENDENCIES)
- @rm -f JAnalyze$(EXEEXT)
- @if test ! -s "classJAnalyze.stamp"; then \
- $(GCJLINK) $(JAnalyze_LDFLAGS) $(JAnalyze_OBJECTS) $(JAnalyze_LDADD) $(LIBS); \
- echo timestamp > classJAnalyze.stamp; \
- else :; fi
-
-install-JAnalyzeJAVA: classJAnalyze.stamp
- @$(NORMAL_INSTALL)
- test -z "$(JAnalyzedir)" || $(mkdir_p) "$(DESTDIR)$(JAnalyzedir)"
- @test -z "$(JAnalyze_JAVA/bin)" || for p in *.class; do \
- echo " $(INSTALL_DATA) '$$p' '$(DESTDIR)$(JAnalyzedir)/$$p'";
\
- $(INSTALL_DATA) "$$p" "$(DESTDIR)$(JAnalyzedir)/$$p"; \
- done
-
-install-ndtDATA: $(ndt_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(ndtdir)" || $(mkdir_p) "$(DESTDIR)$(ndtdir)"
- @list='dist/$(ndt_DATA)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- $(am__strip_dir) \
- echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(JAnalyzedir)/$$f'"; \
- $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(JAnalyzedir)/$$f"; \
- done
- @list='bin/*.class'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- $(am__strip_dir) \
- echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(JAnalyzedir)/$$f'"; \
- $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(JAnalyzedir)/$$f"; \
- done
- /bin/cp -Rp external/de $(DESTDIR)$(JAnalyzedir)/
-
-classJAnalyzestamp: $(JAnalyze_JAVA)
- if test -n "$?"; then \
- echo '$(GCJ) $(NDTGCJFLAGS) $?' ; \
- $(GCJ) $(NDTGCJFLAGS) $?; \
- else :; fi
- echo timestamp > classJAnalyze.stamp
-
-bin:
- mkdir -p bin
-
-dist:
- mkdir -p dist
-
-JAnalyze.class: $(JAnalyze_JAVA) $(TEMPDIRS)
- @if test ! -f "classJAnalyze.stamp"; then \
- $(GCJ) $(NDTGCJFLAGS) $(JAnalyze_jar_SOURCES); \
- else :; fi
-
-JAnalyze.jar: JAnalyze.class
- @if test ! -f "classJAnalyze.stamp"; then \
- find ./bin -name '*.class' -print | awk '{sub("./bin/", "-C bin "); print}' > classes.list; \
- find ./external -name '*.class' -print | awk '{sub("./external/", "-C external "); print}' >> classes.list; \
- $(NDTJAR) $(NDTJARFLAG) MANIFEST.MF dist/JAnalyze.jar
@classes.list; \
- echo timestamp > classJAnalyze.stamp; \
- rm classes.list; \
- else :; fi
-
-mostlyclean-generic:
- rm -rf META-INF $(TEMPDIRS) *~
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
=======================================
--- /trunk/src/Makefile.in Sun May 8 04:04:21 2011
+++ /dev/null
@@ -1,1361 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-#########################################################################
-# #
-# Copyright (C) 2003 #
-# Internet2 #
-# All Rights Reserved #
-# #
-#########################################################################
-#
-# File: Makefile.am
-#
-# Author: Jeff Boote
-# Internet2
-#
-# Date: Fri Sep 12 13:33:27 MDT 2003
-#
-# Description:
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-@HAVE_WEB100_FALSE@bin_PROGRAMS
= web100clt$(EXEEXT)
-@HAVE_WEB100_TRUE@bin_PROGRAMS
= web100clt$(EXEEXT) analyze$(EXEEXT) \
-@HAVE_WEB100_TRUE@
viewtrace$(EXEEXT) tr-mkmap$(EXEEXT) \
-@HAVE_WEB100_TRUE@
genplot$(EXEEXT)
-@HAVE_PCAP_H_FALSE@@HAVE_WEB100_TRUE@sbin_PROGRAMS
= fakewww$(EXEEXT)
-@HAVE_PCAP_H_TRUE@@HAVE_WEB100_TRUE@sbin_PROGRAMS
= fakewww$(EXEEXT) \
-@HAVE_PCAP_H_TRUE@@HAVE_WEB100_TRUE@
web100srv$(EXEEXT)
-subdir = src
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)"
-PROGRAMS = $(bin_PROGRAMS) $(sbin_PROGRAMS)
-am_analyze_OBJECTS = analyze-analyze.$(OBJEXT) analyze-usage.$(OBJEXT) \
- analyze-logging.$(OBJEXT)
-analyze_OBJECTS = $(am_analyze_OBJECTS)
-am__DEPENDENCIES_1 =
-analyze_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-am_fakewww_OBJECTS = fakewww-fakewww.$(OBJEXT) \
- fakewww-troute.$(OBJEXT) fakewww-troute6.$(OBJEXT) \
- fakewww-tr-tree.$(OBJEXT) fakewww-tr-tree6.$(OBJEXT) \
- fakewww-network.$(OBJEXT) fakewww-usage.$(OBJEXT) \
- fakewww-logging.$(OBJEXT)
-fakewww_OBJECTS = $(am_fakewww_OBJECTS)
-fakewww_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am_genplot_OBJECTS = genplot-genplot.$(OBJEXT) genplot-usage.$(OBJEXT)
-genplot_OBJECTS = $(am_genplot_OBJECTS)
-genplot_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am_tr_mkmap_OBJECTS = tr_mkmap-tr-mkmap.$(OBJEXT) \
- tr_mkmap-tr-tree.$(OBJEXT) tr_mkmap-tr-tree6.$(OBJEXT) \
- tr_mkmap-usage.$(OBJEXT) tr_mkmap-logging.$(OBJEXT)
-tr_mkmap_OBJECTS = $(am_tr_mkmap_OBJECTS)
-tr_mkmap_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-am_viewtrace_OBJECTS = viewtrace-viewtrace.$(OBJEXT) \
- viewtrace-usage.$(OBJEXT) viewtrace-logging.$(OBJEXT) \
- viewtrace-utils.$(OBJEXT)
-viewtrace_OBJECTS = $(am_viewtrace_OBJECTS)
-viewtrace_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-am_web100clt_OBJECTS = web100clt-web100clt.$(OBJEXT) \
- web100clt-network.$(OBJEXT) web100clt-usage.$(OBJEXT) \
- web100clt-logging.$(OBJEXT) web100clt-utils.$(OBJEXT) \
- web100clt-protocol.$(OBJEXT) web100clt-test_sfw_clt.$(OBJEXT) \
- web100clt-test_mid_clt.$(OBJEXT) \
- web100clt-test_c2s_clt.$(OBJEXT) \
- web100clt-test_s2c_clt.$(OBJEXT) \
- web100clt-test_meta_clt.$(OBJEXT)
-web100clt_OBJECTS = $(am_web100clt_OBJECTS)
-am_web100srv_OBJECTS = web100srv-web100srv.$(OBJEXT) \
- web100srv-web100-util.$(OBJEXT) \
- web100srv-web100-pcap.$(OBJEXT) \
- web100srv-web100-admin.$(OBJEXT) web100srv-network.$(OBJEXT) \
- web100srv-usage.$(OBJEXT) web100srv-utils.$(OBJEXT) \
- web100srv-mrange.$(OBJEXT) web100srv-logging.$(OBJEXT) \
- web100srv-testoptions.$(OBJEXT) web100srv-protocol.$(OBJEXT) \
- web100srv-test_sfw_srv.$(OBJEXT) \
- web100srv-test_meta_srv.$(OBJEXT) web100srv-ndt_odbc.$(OBJEXT)
-web100srv_OBJECTS = $(am_web100srv_OBJECTS)
-web100srv_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(web100srv_LDFLAGS) \
- $(LDFLAGS) -o $@
-DEFAULT_INCLUDES =
-I.@am__isrc@
-I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(analyze_SOURCES) $(fakewww_SOURCES) $(genplot_SOURCES) \
- $(tr_mkmap_SOURCES) $(viewtrace_SOURCES) $(web100clt_SOURCES) \
- $(web100srv_SOURCES)
-DIST_SOURCES = $(analyze_SOURCES) $(fakewww_SOURCES) \
- $(genplot_SOURCES) $(tr_mkmap_SOURCES) $(viewtrace_SOURCES) \
- $(web100clt_SOURCES) $(web100srv_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GCJ = @GCJ@
-GCJDEPMODE = @GCJDEPMODE@
-GCJFLAGS = @GCJFLAGS@
-GREP = @GREP@
-I2UTILINCS = @I2UTILINCS@
-I2UTILLDFLAGS = @I2UTILLDFLAGS@
-I2UTILLIBDEPS = @I2UTILLIBDEPS@
-I2UTILLIBMAKE = @I2UTILLIBMAKE@
-I2UTILLIBS = @I2UTILLIBS@
-INCLUDED_PCAPLIB = @INCLUDED_PCAPLIB@
-INCLUDED_WEB100LIB = @INCLUDED_WEB100LIB@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LINKED_ODBCLIB = @LINKED_ODBCLIB@
-LINKED_PCAPLIB = @LINKED_PCAPLIB@
-LINKED_WEB100LIB = @LINKED_WEB100LIB@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NDTGCJFLAGS = @NDTGCJFLAGS@
-NDTINCDIR = @NDTINCDIR@
-NDTINCS = @NDTINCS@
-NDTJAR = @NDTJAR@
-NDTJARFLAG = @NDTJARFLAG@
-NDTLDFLAGS = @NDTLDFLAGS@
-NDTLIBDIR = @NDTLIBDIR@
-NDTLIBS = @NDTLIBS@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-SET_MAKE = @SET_MAKE@
-SGCJ = @SGCJ@
-SHELL = @SHELL@
-STRIP = @STRIP@
-TOP_BUILD_DIRS = @TOP_BUILD_DIRS@
-VERSION = @VERSION@
-ZLIB = @ZLIB@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_aux_dir = @ac_aux_dir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_GCJ = @ac_ct_GCJ@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-subdirs = @subdirs@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-INCLUDES = $(NDTINCDIR) $(I2UTILINCS)
-AM_LDFLAGS = $(NDTLDFLAGS)
-AM_LIBS = $(I2UTILLIBS)
-AM_CFLAGS = $(NDTCFLAGS)
-ndtdir = $(prefix)/ndt
-web100clt_SOURCES = web100clt.c network.c usage.c logging.c utils.c protocol.c \
- test_sfw_clt.c test_mid_clt.c test_c2s_clt.c test_s2c_clt.c test_meta_clt.c
-
-web100clt_LDADD = $(I2UTILLIBDEPS) -lpthread $(ZLIB)
-web100clt_CPPFLAGS = '-DBASEDIR="$(ndtdir)"'
-web100clt_DEPENDENCIES = $(I2UTILLIBDEPS)
-genplot_SOURCES = genplot.c usage.c
-genplot_LDADD = $(NDTLIBS) $(I2UTILLIBDEPS)
-genplot_CPPFLAGS = '-DBASEDIR="$(ndtdir)"'
-analyze_SOURCES = analyze.c usage.c logging.c
-analyze_LDADD = $(NDTLIBS) $(I2UTILLIBDEPS) $(ZLIB)
-analyze_CPPFLAGS = '-DBASEDIR="$(ndtdir)"'
-fakewww_SOURCES = fakewww.c troute.c troute6.c tr-tree.c tr-tree6.c network.c usage.c logging.c
-fakewww_LDADD = $(I2UTILLIBDEPS) $(ZLIB)
-fakewww_CPPFLAGS = '-DBASEDIR="$(ndtdir)"'
-web100srv_SOURCES = web100srv.c web100-util.c web100-pcap.c web100-admin.c \
- network.c usage.c utils.c mrange.c logging.c testoptions.c \
- protocol.c test_sfw_srv.c test_meta_srv.c ndt_odbc.c
-
-web100srv_LDFLAGS = $(NDTLDFLAGS) $(I2UTILLDFLAGS)
-web100srv_LDADD = $(NDTLIBS) $(I2UTILLIBS) $(I2UTILLIBDEPS) -lpthread $(ZLIB)
-web100srv_CPPFLAGS = '-DBASEDIR="$(ndtdir)"'
-web100srv_DEPENDENCIES = $(I2UTILLIBDEPS)
-viewtrace_SOURCES = viewtrace.c usage.c logging.c utils.c
-viewtrace_LDADD = $(NDTLIBS) $(I2UTILLIBDEPS) $(ZLIB)
-viewtrace_CPPFLAGS = '-DBASEDIR="$(ndtdir)"'
-tr_mkmap_SOURCES = tr-mkmap.c tr-tree.c tr-tree6.c usage.c logging.c
-tr_mkmap_LDADD = $(NDTLIBS) $(I2UTILLIBDEPS) $(ZLIB)
-tr_mkmap_CPPFLAGS = '-DBASEDIR="$(ndtdir)"'
-EXTRA_DIST = clt_tests.h logging.h mrange.h network.h protocol.h testoptions.h test_sfw.h test_meta.h \
- troute.h tr-tree.h usage.h utils.h varinfo.h web100-admin.h web100srv.h ndt_odbc.h
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-binPROGRAMS: $(bin_PROGRAMS)
- @$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
- @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
- for p in $$list; do echo "$$p $$p"; done | \
- sed 's/$(EXEEXT)$$//' | \
- while read p p1; do if test -f $$p; \
- then echo "$$p"; echo "$$p"; else :; fi; \
- done | \
- sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
- -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
- sed 'N;N;N;s,\n, ,g' | \
- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
- if ($$2 == $$4) files[d] = files[d] " " $$1; \
- else { print "f", $$3 "/" $$4, $$1; } } \
- END { for (d in files) print "f", d, files[d] }' | \
- while read type dir files; do \
- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
- test -z "$$files" || { \
- echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
- $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-binPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
- files=`for p in $$list; do echo "$$p"; done | \
- sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
- -e 's/$$/$(EXEEXT)/' `; \
- test -n "$$list" || exit 0; \
- echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(bindir)" && rm -f $$files
-
-clean-binPROGRAMS:
- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
-install-sbinPROGRAMS: $(sbin_PROGRAMS)
- @$(NORMAL_INSTALL)
- test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
- @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
- for p in $$list; do echo "$$p $$p"; done | \
- sed 's/$(EXEEXT)$$//' | \
- while read p p1; do if test -f $$p; \
- then echo "$$p"; echo "$$p"; else :; fi; \
- done | \
- sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
- -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
- sed 'N;N;N;s,\n, ,g' | \
- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
- if ($$2 == $$4) files[d] = files[d] " " $$1; \
- else { print "f", $$3 "/" $$4, $$1; } } \
- END { for (d in files) print "f", d, files[d] }' | \
- while read type dir files; do \
- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
- test -z "$$files" || { \
- echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \
- $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-sbinPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
- files=`for p in $$list; do echo "$$p"; done | \
- sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
- -e 's/$$/$(EXEEXT)/' `; \
- test -n "$$list" || exit 0; \
- echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(sbindir)" && rm -f $$files
-
-clean-sbinPROGRAMS:
- -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
-analyze$(EXEEXT): $(analyze_OBJECTS) $(analyze_DEPENDENCIES)
- @rm -f analyze$(EXEEXT)
- $(LINK) $(analyze_OBJECTS) $(analyze_LDADD) $(LIBS)
-fakewww$(EXEEXT): $(fakewww_OBJECTS) $(fakewww_DEPENDENCIES)
- @rm -f fakewww$(EXEEXT)
- $(LINK) $(fakewww_OBJECTS) $(fakewww_LDADD) $(LIBS)
-genplot$(EXEEXT): $(genplot_OBJECTS) $(genplot_DEPENDENCIES)
- @rm -f genplot$(EXEEXT)
- $(LINK) $(genplot_OBJECTS) $(genplot_LDADD) $(LIBS)
-tr-mkmap$(EXEEXT): $(tr_mkmap_OBJECTS) $(tr_mkmap_DEPENDENCIES)
- @rm -f tr-mkmap$(EXEEXT)
- $(LINK) $(tr_mkmap_OBJECTS) $(tr_mkmap_LDADD) $(LIBS)
-viewtrace$(EXEEXT): $(viewtrace_OBJECTS) $(viewtrace_DEPENDENCIES)
- @rm -f viewtrace$(EXEEXT)
- $(LINK) $(viewtrace_OBJECTS) $(viewtrace_LDADD) $(LIBS)
-web100clt$(EXEEXT): $(web100clt_OBJECTS) $(web100clt_DEPENDENCIES)
- @rm -f web100clt$(EXEEXT)
- $(LINK) $(web100clt_OBJECTS) $(web100clt_LDADD) $(LIBS)
-web100srv$(EXEEXT): $(web100srv_OBJECTS) $(web100srv_DEPENDENCIES)
- @rm -f web100srv$(EXEEXT)
- $(web100srv_LINK) $(web100srv_OBJECTS) $(web100srv_LDADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/analyze-analyze.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/analyze-logging.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/analyze-usage.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fakewww-fakewww.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fakewww-logging.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fakewww-network.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fakewww-tr-tree.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fakewww-tr-tree6.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fakewww-troute.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fakewww-troute6.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fakewww-usage.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genplot-genplot.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genplot-usage.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tr_mkmap-logging.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tr_mkmap-tr-mkmap.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tr_mkmap-tr-tree.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tr_mkmap-tr-tree6.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tr_mkmap-usage.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/viewtrace-logging.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/viewtrace-usage.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/viewtrace-utils.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/viewtrace-viewtrace.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100clt-logging.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100clt-network.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100clt-protocol.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100clt-test_c2s_clt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100clt-test_meta_clt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100clt-test_mid_clt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100clt-test_s2c_clt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100clt-test_sfw_clt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100clt-usage.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100clt-utils.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100clt-web100clt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100srv-logging.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100srv-mrange.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100srv-ndt_odbc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100srv-network.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100srv-protocol.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100srv-test_meta_srv.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100srv-test_sfw_srv.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100srv-testoptions.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100srv-usage.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100srv-utils.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100srv-web100-admin.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100srv-web100-pcap.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100srv-web100-util.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web100srv-web100srv.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@
$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@
$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@
$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@
$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-analyze-analyze.o: analyze.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(analyze_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT analyze-analyze.o -MD -MP -MF $(DEPDIR)/analyze-analyze.Tpo -c -o analyze-analyze.o `test -f 'analyze.c' || echo '$(srcdir)/'`analyze.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/analyze-analyze.Tpo $(DEPDIR)/analyze-analyze.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='analyze.c' object='analyze-analyze.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(analyze_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o analyze-analyze.o `test -f 'analyze.c' || echo '$(srcdir)/'`analyze.c
-
-analyze-analyze.obj: analyze.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(analyze_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT analyze-analyze.obj -MD -MP -MF $(DEPDIR)/analyze-analyze.Tpo -c -o analyze-analyze.obj `if test -f 'analyze.c'; then $(CYGPATH_W) 'analyze.c'; else $(CYGPATH_W) '$(srcdir)/analyze.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/analyze-analyze.Tpo $(DEPDIR)/analyze-analyze.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='analyze.c' object='analyze-analyze.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(analyze_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o analyze-analyze.obj `if test -f 'analyze.c'; then $(CYGPATH_W) 'analyze.c'; else $(CYGPATH_W) '$(srcdir)/analyze.c'; fi`
-
-analyze-usage.o: usage.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(analyze_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT analyze-usage.o -MD -MP -MF $(DEPDIR)/analyze-usage.Tpo -c -o analyze-usage.o `test -f 'usage.c' || echo '$(srcdir)/'`usage.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/analyze-usage.Tpo $(DEPDIR)/analyze-usage.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usage.c' object='analyze-usage.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(analyze_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o analyze-usage.o `test -f 'usage.c' || echo '$(srcdir)/'`usage.c
-
-analyze-usage.obj: usage.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(analyze_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT analyze-usage.obj -MD -MP -MF $(DEPDIR)/analyze-usage.Tpo -c -o analyze-usage.obj `if test -f 'usage.c'; then $(CYGPATH_W) 'usage.c'; else $(CYGPATH_W) '$(srcdir)/usage.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/analyze-usage.Tpo $(DEPDIR)/analyze-usage.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usage.c' object='analyze-usage.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(analyze_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o analyze-usage.obj `if test -f 'usage.c'; then $(CYGPATH_W) 'usage.c'; else $(CYGPATH_W) '$(srcdir)/usage.c'; fi`
-
-analyze-logging.o: logging.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(analyze_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT analyze-logging.o -MD -MP -MF $(DEPDIR)/analyze-logging.Tpo -c -o analyze-logging.o `test -f 'logging.c' || echo '$(srcdir)/'`logging.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/analyze-logging.Tpo $(DEPDIR)/analyze-logging.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='logging.c' object='analyze-logging.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(analyze_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o analyze-logging.o `test -f 'logging.c' || echo '$(srcdir)/'`logging.c
-
-analyze-logging.obj: logging.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(analyze_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT analyze-logging.obj -MD -MP -MF $(DEPDIR)/analyze-logging.Tpo -c -o analyze-logging.obj `if test -f 'logging.c'; then $(CYGPATH_W) 'logging.c'; else $(CYGPATH_W) '$(srcdir)/logging.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/analyze-logging.Tpo $(DEPDIR)/analyze-logging.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='logging.c' object='analyze-logging.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(analyze_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o analyze-logging.obj `if test -f 'logging.c'; then $(CYGPATH_W) 'logging.c'; else $(CYGPATH_W) '$(srcdir)/logging.c'; fi`
-
-fakewww-fakewww.o: fakewww.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fakewww-fakewww.o -MD -MP -MF $(DEPDIR)/fakewww-fakewww.Tpo -c -o fakewww-fakewww.o `test -f 'fakewww.c' || echo '$(srcdir)/'`fakewww.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fakewww-fakewww.Tpo $(DEPDIR)/fakewww-fakewww.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fakewww.c' object='fakewww-fakewww.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fakewww-fakewww.o `test -f 'fakewww.c' || echo '$(srcdir)/'`fakewww.c
-
-fakewww-fakewww.obj: fakewww.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fakewww-fakewww.obj -MD -MP -MF $(DEPDIR)/fakewww-fakewww.Tpo -c -o fakewww-fakewww.obj `if test -f 'fakewww.c'; then $(CYGPATH_W) 'fakewww.c'; else $(CYGPATH_W) '$(srcdir)/fakewww.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fakewww-fakewww.Tpo $(DEPDIR)/fakewww-fakewww.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fakewww.c' object='fakewww-fakewww.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fakewww-fakewww.obj `if test -f 'fakewww.c'; then $(CYGPATH_W) 'fakewww.c'; else $(CYGPATH_W) '$(srcdir)/fakewww.c'; fi`
-
-fakewww-troute.o: troute.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fakewww-troute.o -MD -MP -MF $(DEPDIR)/fakewww-troute.Tpo -c -o fakewww-troute.o `test -f 'troute.c' || echo '$(srcdir)/'`troute.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fakewww-troute.Tpo $(DEPDIR)/fakewww-troute.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='troute.c' object='fakewww-troute.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fakewww-troute.o `test -f 'troute.c' || echo '$(srcdir)/'`troute.c
-
-fakewww-troute.obj: troute.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fakewww-troute.obj -MD -MP -MF $(DEPDIR)/fakewww-troute.Tpo -c -o fakewww-troute.obj `if test -f 'troute.c'; then $(CYGPATH_W) 'troute.c'; else $(CYGPATH_W) '$(srcdir)/troute.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fakewww-troute.Tpo $(DEPDIR)/fakewww-troute.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='troute.c' object='fakewww-troute.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fakewww-troute.obj `if test -f 'troute.c'; then $(CYGPATH_W) 'troute.c'; else $(CYGPATH_W) '$(srcdir)/troute.c'; fi`
-
-fakewww-troute6.o: troute6.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fakewww-troute6.o -MD -MP -MF $(DEPDIR)/fakewww-troute6.Tpo -c -o fakewww-troute6.o `test -f 'troute6.c' || echo '$(srcdir)/'`troute6.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fakewww-troute6.Tpo $(DEPDIR)/fakewww-troute6.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='troute6.c' object='fakewww-troute6.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fakewww-troute6.o `test -f 'troute6.c' || echo '$(srcdir)/'`troute6.c
-
-fakewww-troute6.obj: troute6.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fakewww-troute6.obj -MD -MP -MF $(DEPDIR)/fakewww-troute6.Tpo -c -o fakewww-troute6.obj `if test -f 'troute6.c'; then $(CYGPATH_W) 'troute6.c'; else $(CYGPATH_W) '$(srcdir)/troute6.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fakewww-troute6.Tpo $(DEPDIR)/fakewww-troute6.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='troute6.c' object='fakewww-troute6.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fakewww-troute6.obj `if test -f 'troute6.c'; then $(CYGPATH_W) 'troute6.c'; else $(CYGPATH_W) '$(srcdir)/troute6.c'; fi`
-
-fakewww-tr-tree.o: tr-tree.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fakewww-tr-tree.o -MD -MP -MF $(DEPDIR)/fakewww-tr-tree.Tpo -c -o fakewww-tr-tree.o `test -f 'tr-tree.c' || echo '$(srcdir)/'`tr-tree.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fakewww-tr-tree.Tpo $(DEPDIR)/fakewww-tr-tree.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tr-tree.c' object='fakewww-tr-tree.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fakewww-tr-tree.o `test -f 'tr-tree.c' || echo '$(srcdir)/'`tr-tree.c
-
-fakewww-tr-tree.obj: tr-tree.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fakewww-tr-tree.obj -MD -MP -MF $(DEPDIR)/fakewww-tr-tree.Tpo -c -o fakewww-tr-tree.obj `if test -f 'tr-tree.c'; then $(CYGPATH_W) 'tr-tree.c'; else $(CYGPATH_W) '$(srcdir)/tr-tree.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fakewww-tr-tree.Tpo $(DEPDIR)/fakewww-tr-tree.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tr-tree.c' object='fakewww-tr-tree.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fakewww-tr-tree.obj `if test -f 'tr-tree.c'; then $(CYGPATH_W) 'tr-tree.c'; else $(CYGPATH_W) '$(srcdir)/tr-tree.c'; fi`
-
-fakewww-tr-tree6.o: tr-tree6.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fakewww-tr-tree6.o -MD -MP -MF $(DEPDIR)/fakewww-tr-tree6.Tpo -c -o fakewww-tr-tree6.o `test -f 'tr-tree6.c' || echo '$(srcdir)/'`tr-tree6.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fakewww-tr-tree6.Tpo $(DEPDIR)/fakewww-tr-tree6.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tr-tree6.c' object='fakewww-tr-tree6.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fakewww-tr-tree6.o `test -f 'tr-tree6.c' || echo '$(srcdir)/'`tr-tree6.c
-
-fakewww-tr-tree6.obj: tr-tree6.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fakewww-tr-tree6.obj -MD -MP -MF $(DEPDIR)/fakewww-tr-tree6.Tpo -c -o fakewww-tr-tree6.obj `if test -f 'tr-tree6.c'; then $(CYGPATH_W) 'tr-tree6.c'; else $(CYGPATH_W) '$(srcdir)/tr-tree6.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fakewww-tr-tree6.Tpo $(DEPDIR)/fakewww-tr-tree6.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tr-tree6.c' object='fakewww-tr-tree6.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fakewww-tr-tree6.obj `if test -f 'tr-tree6.c'; then $(CYGPATH_W) 'tr-tree6.c'; else $(CYGPATH_W) '$(srcdir)/tr-tree6.c'; fi`
-
-fakewww-network.o: network.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fakewww-network.o -MD -MP -MF $(DEPDIR)/fakewww-network.Tpo -c -o fakewww-network.o `test -f 'network.c' || echo '$(srcdir)/'`network.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fakewww-network.Tpo $(DEPDIR)/fakewww-network.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='network.c' object='fakewww-network.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fakewww-network.o `test -f 'network.c' || echo '$(srcdir)/'`network.c
-
-fakewww-network.obj: network.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fakewww-network.obj -MD -MP -MF $(DEPDIR)/fakewww-network.Tpo -c -o fakewww-network.obj `if test -f 'network.c'; then $(CYGPATH_W) 'network.c'; else $(CYGPATH_W) '$(srcdir)/network.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fakewww-network.Tpo $(DEPDIR)/fakewww-network.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='network.c' object='fakewww-network.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fakewww-network.obj `if test -f 'network.c'; then $(CYGPATH_W) 'network.c'; else $(CYGPATH_W) '$(srcdir)/network.c'; fi`
-
-fakewww-usage.o: usage.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fakewww-usage.o -MD -MP -MF $(DEPDIR)/fakewww-usage.Tpo -c -o fakewww-usage.o `test -f 'usage.c' || echo '$(srcdir)/'`usage.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fakewww-usage.Tpo $(DEPDIR)/fakewww-usage.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usage.c' object='fakewww-usage.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fakewww-usage.o `test -f 'usage.c' || echo '$(srcdir)/'`usage.c
-
-fakewww-usage.obj: usage.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fakewww-usage.obj -MD -MP -MF $(DEPDIR)/fakewww-usage.Tpo -c -o fakewww-usage.obj `if test -f 'usage.c'; then $(CYGPATH_W) 'usage.c'; else $(CYGPATH_W) '$(srcdir)/usage.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fakewww-usage.Tpo $(DEPDIR)/fakewww-usage.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usage.c' object='fakewww-usage.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fakewww-usage.obj `if test -f 'usage.c'; then $(CYGPATH_W) 'usage.c'; else $(CYGPATH_W) '$(srcdir)/usage.c'; fi`
-
-fakewww-logging.o: logging.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fakewww-logging.o -MD -MP -MF $(DEPDIR)/fakewww-logging.Tpo -c -o fakewww-logging.o `test -f 'logging.c' || echo '$(srcdir)/'`logging.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fakewww-logging.Tpo $(DEPDIR)/fakewww-logging.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='logging.c' object='fakewww-logging.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fakewww-logging.o `test -f 'logging.c' || echo '$(srcdir)/'`logging.c
-
-fakewww-logging.obj: logging.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fakewww-logging.obj -MD -MP -MF $(DEPDIR)/fakewww-logging.Tpo -c -o fakewww-logging.obj `if test -f 'logging.c'; then $(CYGPATH_W) 'logging.c'; else $(CYGPATH_W) '$(srcdir)/logging.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/fakewww-logging.Tpo $(DEPDIR)/fakewww-logging.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='logging.c' object='fakewww-logging.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fakewww_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fakewww-logging.obj `if test -f 'logging.c'; then $(CYGPATH_W) 'logging.c'; else $(CYGPATH_W) '$(srcdir)/logging.c'; fi`
-
-genplot-genplot.o: genplot.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genplot_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT genplot-genplot.o -MD -MP -MF $(DEPDIR)/genplot-genplot.Tpo -c -o genplot-genplot.o `test -f 'genplot.c' || echo '$(srcdir)/'`genplot.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/genplot-genplot.Tpo $(DEPDIR)/genplot-genplot.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='genplot.c' object='genplot-genplot.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genplot_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o genplot-genplot.o `test -f 'genplot.c' || echo '$(srcdir)/'`genplot.c
-
-genplot-genplot.obj: genplot.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genplot_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT genplot-genplot.obj -MD -MP -MF $(DEPDIR)/genplot-genplot.Tpo -c -o genplot-genplot.obj `if test -f 'genplot.c'; then $(CYGPATH_W) 'genplot.c'; else $(CYGPATH_W) '$(srcdir)/genplot.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/genplot-genplot.Tpo $(DEPDIR)/genplot-genplot.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='genplot.c' object='genplot-genplot.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genplot_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o genplot-genplot.obj `if test -f 'genplot.c'; then $(CYGPATH_W) 'genplot.c'; else $(CYGPATH_W) '$(srcdir)/genplot.c'; fi`
-
-genplot-usage.o: usage.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genplot_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT genplot-usage.o -MD -MP -MF $(DEPDIR)/genplot-usage.Tpo -c -o genplot-usage.o `test -f 'usage.c' || echo '$(srcdir)/'`usage.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/genplot-usage.Tpo $(DEPDIR)/genplot-usage.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usage.c' object='genplot-usage.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genplot_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o genplot-usage.o `test -f 'usage.c' || echo '$(srcdir)/'`usage.c
-
-genplot-usage.obj: usage.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genplot_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT genplot-usage.obj -MD -MP -MF $(DEPDIR)/genplot-usage.Tpo -c -o genplot-usage.obj `if test -f 'usage.c'; then $(CYGPATH_W) 'usage.c'; else $(CYGPATH_W) '$(srcdir)/usage.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/genplot-usage.Tpo $(DEPDIR)/genplot-usage.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usage.c' object='genplot-usage.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(genplot_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o genplot-usage.obj `if test -f 'usage.c'; then $(CYGPATH_W) 'usage.c'; else $(CYGPATH_W) '$(srcdir)/usage.c'; fi`
-
-tr_mkmap-tr-mkmap.o: tr-mkmap.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tr_mkmap-tr-mkmap.o -MD -MP -MF $(DEPDIR)/tr_mkmap-tr-mkmap.Tpo -c -o tr_mkmap-tr-mkmap.o `test -f 'tr-mkmap.c' || echo '$(srcdir)/'`tr-mkmap.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tr_mkmap-tr-mkmap.Tpo $(DEPDIR)/tr_mkmap-tr-mkmap.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tr-mkmap.c' object='tr_mkmap-tr-mkmap.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tr_mkmap-tr-mkmap.o `test -f 'tr-mkmap.c' || echo '$(srcdir)/'`tr-mkmap.c
-
-tr_mkmap-tr-mkmap.obj: tr-mkmap.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tr_mkmap-tr-mkmap.obj -MD -MP -MF $(DEPDIR)/tr_mkmap-tr-mkmap.Tpo -c -o tr_mkmap-tr-mkmap.obj `if test -f 'tr-mkmap.c'; then $(CYGPATH_W) 'tr-mkmap.c'; else $(CYGPATH_W) '$(srcdir)/tr-mkmap.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tr_mkmap-tr-mkmap.Tpo $(DEPDIR)/tr_mkmap-tr-mkmap.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tr-mkmap.c' object='tr_mkmap-tr-mkmap.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tr_mkmap-tr-mkmap.obj `if test -f 'tr-mkmap.c'; then $(CYGPATH_W) 'tr-mkmap.c'; else $(CYGPATH_W) '$(srcdir)/tr-mkmap.c'; fi`
-
-tr_mkmap-tr-tree.o: tr-tree.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tr_mkmap-tr-tree.o -MD -MP -MF $(DEPDIR)/tr_mkmap-tr-tree.Tpo -c -o tr_mkmap-tr-tree.o `test -f 'tr-tree.c' || echo '$(srcdir)/'`tr-tree.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tr_mkmap-tr-tree.Tpo $(DEPDIR)/tr_mkmap-tr-tree.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tr-tree.c' object='tr_mkmap-tr-tree.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tr_mkmap-tr-tree.o `test -f 'tr-tree.c' || echo '$(srcdir)/'`tr-tree.c
-
-tr_mkmap-tr-tree.obj: tr-tree.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tr_mkmap-tr-tree.obj -MD -MP -MF $(DEPDIR)/tr_mkmap-tr-tree.Tpo -c -o tr_mkmap-tr-tree.obj `if test -f 'tr-tree.c'; then $(CYGPATH_W) 'tr-tree.c'; else $(CYGPATH_W) '$(srcdir)/tr-tree.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tr_mkmap-tr-tree.Tpo $(DEPDIR)/tr_mkmap-tr-tree.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tr-tree.c' object='tr_mkmap-tr-tree.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tr_mkmap-tr-tree.obj `if test -f 'tr-tree.c'; then $(CYGPATH_W) 'tr-tree.c'; else $(CYGPATH_W) '$(srcdir)/tr-tree.c'; fi`
-
-tr_mkmap-tr-tree6.o: tr-tree6.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tr_mkmap-tr-tree6.o -MD -MP -MF $(DEPDIR)/tr_mkmap-tr-tree6.Tpo -c -o tr_mkmap-tr-tree6.o `test -f 'tr-tree6.c' || echo '$(srcdir)/'`tr-tree6.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tr_mkmap-tr-tree6.Tpo $(DEPDIR)/tr_mkmap-tr-tree6.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tr-tree6.c' object='tr_mkmap-tr-tree6.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tr_mkmap-tr-tree6.o `test -f 'tr-tree6.c' || echo '$(srcdir)/'`tr-tree6.c
-
-tr_mkmap-tr-tree6.obj: tr-tree6.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tr_mkmap-tr-tree6.obj -MD -MP -MF $(DEPDIR)/tr_mkmap-tr-tree6.Tpo -c -o tr_mkmap-tr-tree6.obj `if test -f 'tr-tree6.c'; then $(CYGPATH_W) 'tr-tree6.c'; else $(CYGPATH_W) '$(srcdir)/tr-tree6.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tr_mkmap-tr-tree6.Tpo $(DEPDIR)/tr_mkmap-tr-tree6.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tr-tree6.c' object='tr_mkmap-tr-tree6.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tr_mkmap-tr-tree6.obj `if test -f 'tr-tree6.c'; then $(CYGPATH_W) 'tr-tree6.c'; else $(CYGPATH_W) '$(srcdir)/tr-tree6.c'; fi`
-
-tr_mkmap-usage.o: usage.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tr_mkmap-usage.o -MD -MP -MF $(DEPDIR)/tr_mkmap-usage.Tpo -c -o tr_mkmap-usage.o `test -f 'usage.c' || echo '$(srcdir)/'`usage.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tr_mkmap-usage.Tpo $(DEPDIR)/tr_mkmap-usage.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usage.c' object='tr_mkmap-usage.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tr_mkmap-usage.o `test -f 'usage.c' || echo '$(srcdir)/'`usage.c
-
-tr_mkmap-usage.obj: usage.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tr_mkmap-usage.obj -MD -MP -MF $(DEPDIR)/tr_mkmap-usage.Tpo -c -o tr_mkmap-usage.obj `if test -f 'usage.c'; then $(CYGPATH_W) 'usage.c'; else $(CYGPATH_W) '$(srcdir)/usage.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tr_mkmap-usage.Tpo $(DEPDIR)/tr_mkmap-usage.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usage.c' object='tr_mkmap-usage.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tr_mkmap-usage.obj `if test -f 'usage.c'; then $(CYGPATH_W) 'usage.c'; else $(CYGPATH_W) '$(srcdir)/usage.c'; fi`
-
-tr_mkmap-logging.o: logging.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tr_mkmap-logging.o -MD -MP -MF $(DEPDIR)/tr_mkmap-logging.Tpo -c -o tr_mkmap-logging.o `test -f 'logging.c' || echo '$(srcdir)/'`logging.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tr_mkmap-logging.Tpo $(DEPDIR)/tr_mkmap-logging.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='logging.c' object='tr_mkmap-logging.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tr_mkmap-logging.o `test -f 'logging.c' || echo '$(srcdir)/'`logging.c
-
-tr_mkmap-logging.obj: logging.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tr_mkmap-logging.obj -MD -MP -MF $(DEPDIR)/tr_mkmap-logging.Tpo -c -o tr_mkmap-logging.obj `if test -f 'logging.c'; then $(CYGPATH_W) 'logging.c'; else $(CYGPATH_W) '$(srcdir)/logging.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tr_mkmap-logging.Tpo $(DEPDIR)/tr_mkmap-logging.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='logging.c' object='tr_mkmap-logging.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tr_mkmap_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tr_mkmap-logging.obj `if test -f 'logging.c'; then $(CYGPATH_W) 'logging.c'; else $(CYGPATH_W) '$(srcdir)/logging.c'; fi`
-
-viewtrace-viewtrace.o: viewtrace.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(viewtrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT viewtrace-viewtrace.o -MD -MP -MF $(DEPDIR)/viewtrace-viewtrace.Tpo -c -o viewtrace-viewtrace.o `test -f 'viewtrace.c' || echo '$(srcdir)/'`viewtrace.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/viewtrace-viewtrace.Tpo $(DEPDIR)/viewtrace-viewtrace.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='viewtrace.c' object='viewtrace-viewtrace.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(viewtrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o viewtrace-viewtrace.o `test -f 'viewtrace.c' || echo '$(srcdir)/'`viewtrace.c
-
-viewtrace-viewtrace.obj: viewtrace.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(viewtrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT viewtrace-viewtrace.obj -MD -MP -MF $(DEPDIR)/viewtrace-viewtrace.Tpo -c -o viewtrace-viewtrace.obj `if test -f 'viewtrace.c'; then $(CYGPATH_W) 'viewtrace.c'; else $(CYGPATH_W) '$(srcdir)/viewtrace.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/viewtrace-viewtrace.Tpo $(DEPDIR)/viewtrace-viewtrace.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='viewtrace.c' object='viewtrace-viewtrace.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(viewtrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o viewtrace-viewtrace.obj `if test -f 'viewtrace.c'; then $(CYGPATH_W) 'viewtrace.c'; else $(CYGPATH_W) '$(srcdir)/viewtrace.c'; fi`
-
-viewtrace-usage.o: usage.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(viewtrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT viewtrace-usage.o -MD -MP -MF $(DEPDIR)/viewtrace-usage.Tpo -c -o viewtrace-usage.o `test -f 'usage.c' || echo '$(srcdir)/'`usage.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/viewtrace-usage.Tpo $(DEPDIR)/viewtrace-usage.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usage.c' object='viewtrace-usage.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(viewtrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o viewtrace-usage.o `test -f 'usage.c' || echo '$(srcdir)/'`usage.c
-
-viewtrace-usage.obj: usage.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(viewtrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT viewtrace-usage.obj -MD -MP -MF $(DEPDIR)/viewtrace-usage.Tpo -c -o viewtrace-usage.obj `if test -f 'usage.c'; then $(CYGPATH_W) 'usage.c'; else $(CYGPATH_W) '$(srcdir)/usage.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/viewtrace-usage.Tpo $(DEPDIR)/viewtrace-usage.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usage.c' object='viewtrace-usage.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(viewtrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o viewtrace-usage.obj `if test -f 'usage.c'; then $(CYGPATH_W) 'usage.c'; else $(CYGPATH_W) '$(srcdir)/usage.c'; fi`
-
-viewtrace-logging.o: logging.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(viewtrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT viewtrace-logging.o -MD -MP -MF $(DEPDIR)/viewtrace-logging.Tpo -c -o viewtrace-logging.o `test -f 'logging.c' || echo '$(srcdir)/'`logging.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/viewtrace-logging.Tpo $(DEPDIR)/viewtrace-logging.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='logging.c' object='viewtrace-logging.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(viewtrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o viewtrace-logging.o `test -f 'logging.c' || echo '$(srcdir)/'`logging.c
-
-viewtrace-logging.obj: logging.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(viewtrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT viewtrace-logging.obj -MD -MP -MF $(DEPDIR)/viewtrace-logging.Tpo -c -o viewtrace-logging.obj `if test -f 'logging.c'; then $(CYGPATH_W) 'logging.c'; else $(CYGPATH_W) '$(srcdir)/logging.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/viewtrace-logging.Tpo $(DEPDIR)/viewtrace-logging.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='logging.c' object='viewtrace-logging.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(viewtrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o viewtrace-logging.obj `if test -f 'logging.c'; then $(CYGPATH_W) 'logging.c'; else $(CYGPATH_W) '$(srcdir)/logging.c'; fi`
-
-viewtrace-utils.o: utils.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(viewtrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT viewtrace-utils.o -MD -MP -MF $(DEPDIR)/viewtrace-utils.Tpo -c -o viewtrace-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/viewtrace-utils.Tpo $(DEPDIR)/viewtrace-utils.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='utils.c' object='viewtrace-utils.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(viewtrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o viewtrace-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
-
-viewtrace-utils.obj: utils.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(viewtrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT viewtrace-utils.obj -MD -MP -MF $(DEPDIR)/viewtrace-utils.Tpo -c -o viewtrace-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/viewtrace-utils.Tpo $(DEPDIR)/viewtrace-utils.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='utils.c' object='viewtrace-utils.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(viewtrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o viewtrace-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
-
-web100clt-web100clt.o: web100clt.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-web100clt.o -MD -MP -MF $(DEPDIR)/web100clt-web100clt.Tpo -c -o web100clt-web100clt.o `test -f 'web100clt.c' || echo '$(srcdir)/'`web100clt.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-web100clt.Tpo $(DEPDIR)/web100clt-web100clt.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='web100clt.c' object='web100clt-web100clt.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-web100clt.o `test -f 'web100clt.c' || echo '$(srcdir)/'`web100clt.c
-
-web100clt-web100clt.obj: web100clt.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-web100clt.obj -MD -MP -MF $(DEPDIR)/web100clt-web100clt.Tpo -c -o web100clt-web100clt.obj `if test -f 'web100clt.c'; then $(CYGPATH_W) 'web100clt.c'; else $(CYGPATH_W) '$(srcdir)/web100clt.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-web100clt.Tpo $(DEPDIR)/web100clt-web100clt.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='web100clt.c' object='web100clt-web100clt.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-web100clt.obj `if test -f 'web100clt.c'; then $(CYGPATH_W) 'web100clt.c'; else $(CYGPATH_W) '$(srcdir)/web100clt.c'; fi`
-
-web100clt-network.o: network.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-network.o -MD -MP -MF $(DEPDIR)/web100clt-network.Tpo -c -o web100clt-network.o `test -f 'network.c' || echo '$(srcdir)/'`network.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-network.Tpo $(DEPDIR)/web100clt-network.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='network.c' object='web100clt-network.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-network.o `test -f 'network.c' || echo '$(srcdir)/'`network.c
-
-web100clt-network.obj: network.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-network.obj -MD -MP -MF $(DEPDIR)/web100clt-network.Tpo -c -o web100clt-network.obj `if test -f 'network.c'; then $(CYGPATH_W) 'network.c'; else $(CYGPATH_W) '$(srcdir)/network.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-network.Tpo $(DEPDIR)/web100clt-network.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='network.c' object='web100clt-network.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-network.obj `if test -f 'network.c'; then $(CYGPATH_W) 'network.c'; else $(CYGPATH_W) '$(srcdir)/network.c'; fi`
-
-web100clt-usage.o: usage.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-usage.o -MD -MP -MF $(DEPDIR)/web100clt-usage.Tpo -c -o web100clt-usage.o `test -f 'usage.c' || echo '$(srcdir)/'`usage.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-usage.Tpo $(DEPDIR)/web100clt-usage.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usage.c' object='web100clt-usage.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-usage.o `test -f 'usage.c' || echo '$(srcdir)/'`usage.c
-
-web100clt-usage.obj: usage.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-usage.obj -MD -MP -MF $(DEPDIR)/web100clt-usage.Tpo -c -o web100clt-usage.obj `if test -f 'usage.c'; then $(CYGPATH_W) 'usage.c'; else $(CYGPATH_W) '$(srcdir)/usage.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-usage.Tpo $(DEPDIR)/web100clt-usage.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usage.c' object='web100clt-usage.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-usage.obj `if test -f 'usage.c'; then $(CYGPATH_W) 'usage.c'; else $(CYGPATH_W) '$(srcdir)/usage.c'; fi`
-
-web100clt-logging.o: logging.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-logging.o -MD -MP -MF $(DEPDIR)/web100clt-logging.Tpo -c -o web100clt-logging.o `test -f 'logging.c' || echo '$(srcdir)/'`logging.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-logging.Tpo $(DEPDIR)/web100clt-logging.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='logging.c' object='web100clt-logging.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-logging.o `test -f 'logging.c' || echo '$(srcdir)/'`logging.c
-
-web100clt-logging.obj: logging.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-logging.obj -MD -MP -MF $(DEPDIR)/web100clt-logging.Tpo -c -o web100clt-logging.obj `if test -f 'logging.c'; then $(CYGPATH_W) 'logging.c'; else $(CYGPATH_W) '$(srcdir)/logging.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-logging.Tpo $(DEPDIR)/web100clt-logging.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='logging.c' object='web100clt-logging.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-logging.obj `if test -f 'logging.c'; then $(CYGPATH_W) 'logging.c'; else $(CYGPATH_W) '$(srcdir)/logging.c'; fi`
-
-web100clt-utils.o: utils.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-utils.o -MD -MP -MF $(DEPDIR)/web100clt-utils.Tpo -c -o web100clt-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-utils.Tpo $(DEPDIR)/web100clt-utils.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='utils.c' object='web100clt-utils.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
-
-web100clt-utils.obj: utils.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-utils.obj -MD -MP -MF $(DEPDIR)/web100clt-utils.Tpo -c -o web100clt-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-utils.Tpo $(DEPDIR)/web100clt-utils.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='utils.c' object='web100clt-utils.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
-
-web100clt-protocol.o: protocol.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-protocol.o -MD -MP -MF $(DEPDIR)/web100clt-protocol.Tpo -c -o web100clt-protocol.o `test -f 'protocol.c' || echo '$(srcdir)/'`protocol.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-protocol.Tpo $(DEPDIR)/web100clt-protocol.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='protocol.c' object='web100clt-protocol.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-protocol.o `test -f 'protocol.c' || echo '$(srcdir)/'`protocol.c
-
-web100clt-protocol.obj: protocol.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-protocol.obj -MD -MP -MF $(DEPDIR)/web100clt-protocol.Tpo -c -o web100clt-protocol.obj `if test -f 'protocol.c'; then $(CYGPATH_W) 'protocol.c'; else $(CYGPATH_W) '$(srcdir)/protocol.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-protocol.Tpo $(DEPDIR)/web100clt-protocol.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='protocol.c' object='web100clt-protocol.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-protocol.obj `if test -f 'protocol.c'; then $(CYGPATH_W) 'protocol.c'; else $(CYGPATH_W) '$(srcdir)/protocol.c'; fi`
-
-web100clt-test_sfw_clt.o: test_sfw_clt.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-test_sfw_clt.o -MD -MP -MF $(DEPDIR)/web100clt-test_sfw_clt.Tpo -c -o web100clt-test_sfw_clt.o `test -f 'test_sfw_clt.c' || echo '$(srcdir)/'`test_sfw_clt.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-test_sfw_clt.Tpo $(DEPDIR)/web100clt-test_sfw_clt.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_sfw_clt.c' object='web100clt-test_sfw_clt.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-test_sfw_clt.o `test -f 'test_sfw_clt.c' || echo '$(srcdir)/'`test_sfw_clt.c
-
-web100clt-test_sfw_clt.obj: test_sfw_clt.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-test_sfw_clt.obj -MD -MP -MF $(DEPDIR)/web100clt-test_sfw_clt.Tpo -c -o web100clt-test_sfw_clt.obj `if test -f 'test_sfw_clt.c'; then $(CYGPATH_W) 'test_sfw_clt.c'; else $(CYGPATH_W) '$(srcdir)/test_sfw_clt.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-test_sfw_clt.Tpo $(DEPDIR)/web100clt-test_sfw_clt.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_sfw_clt.c' object='web100clt-test_sfw_clt.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-test_sfw_clt.obj `if test -f 'test_sfw_clt.c'; then $(CYGPATH_W) 'test_sfw_clt.c'; else $(CYGPATH_W) '$(srcdir)/test_sfw_clt.c'; fi`
-
-web100clt-test_mid_clt.o: test_mid_clt.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-test_mid_clt.o -MD -MP -MF $(DEPDIR)/web100clt-test_mid_clt.Tpo -c -o web100clt-test_mid_clt.o `test -f 'test_mid_clt.c' || echo '$(srcdir)/'`test_mid_clt.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-test_mid_clt.Tpo $(DEPDIR)/web100clt-test_mid_clt.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_mid_clt.c' object='web100clt-test_mid_clt.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-test_mid_clt.o `test -f 'test_mid_clt.c' || echo '$(srcdir)/'`test_mid_clt.c
-
-web100clt-test_mid_clt.obj: test_mid_clt.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-test_mid_clt.obj -MD -MP -MF $(DEPDIR)/web100clt-test_mid_clt.Tpo -c -o web100clt-test_mid_clt.obj `if test -f 'test_mid_clt.c'; then $(CYGPATH_W) 'test_mid_clt.c'; else $(CYGPATH_W) '$(srcdir)/test_mid_clt.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-test_mid_clt.Tpo $(DEPDIR)/web100clt-test_mid_clt.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_mid_clt.c' object='web100clt-test_mid_clt.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-test_mid_clt.obj `if test -f 'test_mid_clt.c'; then $(CYGPATH_W) 'test_mid_clt.c'; else $(CYGPATH_W) '$(srcdir)/test_mid_clt.c'; fi`
-
-web100clt-test_c2s_clt.o: test_c2s_clt.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-test_c2s_clt.o -MD -MP -MF $(DEPDIR)/web100clt-test_c2s_clt.Tpo -c -o web100clt-test_c2s_clt.o `test -f 'test_c2s_clt.c' || echo '$(srcdir)/'`test_c2s_clt.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-test_c2s_clt.Tpo $(DEPDIR)/web100clt-test_c2s_clt.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_c2s_clt.c' object='web100clt-test_c2s_clt.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-test_c2s_clt.o `test -f 'test_c2s_clt.c' || echo '$(srcdir)/'`test_c2s_clt.c
-
-web100clt-test_c2s_clt.obj: test_c2s_clt.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-test_c2s_clt.obj -MD -MP -MF $(DEPDIR)/web100clt-test_c2s_clt.Tpo -c -o web100clt-test_c2s_clt.obj `if test -f 'test_c2s_clt.c'; then $(CYGPATH_W) 'test_c2s_clt.c'; else $(CYGPATH_W) '$(srcdir)/test_c2s_clt.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-test_c2s_clt.Tpo $(DEPDIR)/web100clt-test_c2s_clt.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_c2s_clt.c' object='web100clt-test_c2s_clt.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-test_c2s_clt.obj `if test -f 'test_c2s_clt.c'; then $(CYGPATH_W) 'test_c2s_clt.c'; else $(CYGPATH_W) '$(srcdir)/test_c2s_clt.c'; fi`
-
-web100clt-test_s2c_clt.o: test_s2c_clt.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-test_s2c_clt.o -MD -MP -MF $(DEPDIR)/web100clt-test_s2c_clt.Tpo -c -o web100clt-test_s2c_clt.o `test -f 'test_s2c_clt.c' || echo '$(srcdir)/'`test_s2c_clt.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-test_s2c_clt.Tpo $(DEPDIR)/web100clt-test_s2c_clt.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_s2c_clt.c' object='web100clt-test_s2c_clt.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-test_s2c_clt.o `test -f 'test_s2c_clt.c' || echo '$(srcdir)/'`test_s2c_clt.c
-
-web100clt-test_s2c_clt.obj: test_s2c_clt.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-test_s2c_clt.obj -MD -MP -MF $(DEPDIR)/web100clt-test_s2c_clt.Tpo -c -o web100clt-test_s2c_clt.obj `if test -f 'test_s2c_clt.c'; then $(CYGPATH_W) 'test_s2c_clt.c'; else $(CYGPATH_W) '$(srcdir)/test_s2c_clt.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-test_s2c_clt.Tpo $(DEPDIR)/web100clt-test_s2c_clt.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_s2c_clt.c' object='web100clt-test_s2c_clt.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-test_s2c_clt.obj `if test -f 'test_s2c_clt.c'; then $(CYGPATH_W) 'test_s2c_clt.c'; else $(CYGPATH_W) '$(srcdir)/test_s2c_clt.c'; fi`
-
-web100clt-test_meta_clt.o: test_meta_clt.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-test_meta_clt.o -MD -MP -MF $(DEPDIR)/web100clt-test_meta_clt.Tpo -c -o web100clt-test_meta_clt.o `test -f 'test_meta_clt.c' || echo '$(srcdir)/'`test_meta_clt.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-test_meta_clt.Tpo $(DEPDIR)/web100clt-test_meta_clt.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_meta_clt.c' object='web100clt-test_meta_clt.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-test_meta_clt.o `test -f 'test_meta_clt.c' || echo '$(srcdir)/'`test_meta_clt.c
-
-web100clt-test_meta_clt.obj: test_meta_clt.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100clt-test_meta_clt.obj -MD -MP -MF $(DEPDIR)/web100clt-test_meta_clt.Tpo -c -o web100clt-test_meta_clt.obj `if test -f 'test_meta_clt.c'; then $(CYGPATH_W) 'test_meta_clt.c'; else $(CYGPATH_W) '$(srcdir)/test_meta_clt.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100clt-test_meta_clt.Tpo $(DEPDIR)/web100clt-test_meta_clt.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_meta_clt.c' object='web100clt-test_meta_clt.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100clt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100clt-test_meta_clt.obj `if test -f 'test_meta_clt.c'; then $(CYGPATH_W) 'test_meta_clt.c'; else $(CYGPATH_W) '$(srcdir)/test_meta_clt.c'; fi`
-
-web100srv-web100srv.o: web100srv.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100srv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100srv-web100srv.o -MD -MP -MF $(DEPDIR)/web100srv-web100srv.Tpo -c -o web100srv-web100srv.o `test -f 'web100srv.c' || echo '$(srcdir)/'`web100srv.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100srv-web100srv.Tpo $(DEPDIR)/web100srv-web100srv.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='web100srv.c' object='web100srv-web100srv.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100srv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100srv-web100srv.o `test -f 'web100srv.c' || echo '$(srcdir)/'`web100srv.c
-
-web100srv-web100srv.obj: web100srv.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100srv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100srv-web100srv.obj -MD -MP -MF $(DEPDIR)/web100srv-web100srv.Tpo -c -o web100srv-web100srv.obj `if test -f 'web100srv.c'; then $(CYGPATH_W) 'web100srv.c'; else $(CYGPATH_W) '$(srcdir)/web100srv.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100srv-web100srv.Tpo $(DEPDIR)/web100srv-web100srv.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='web100srv.c' object='web100srv-web100srv.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100srv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100srv-web100srv.obj `if test -f 'web100srv.c'; then $(CYGPATH_W) 'web100srv.c'; else $(CYGPATH_W) '$(srcdir)/web100srv.c'; fi`
-
-web100srv-web100-util.o: web100-util.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100srv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100srv-web100-util.o -MD -MP -MF $(DEPDIR)/web100srv-web100-util.Tpo -c -o web100srv-web100-util.o `test -f 'web100-util.c' || echo '$(srcdir)/'`web100-util.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100srv-web100-util.Tpo $(DEPDIR)/web100srv-web100-util.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='web100-util.c' object='web100srv-web100-util.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100srv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100srv-web100-util.o `test -f 'web100-util.c' || echo '$(srcdir)/'`web100-util.c
-
-web100srv-web100-util.obj: web100-util.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100srv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100srv-web100-util.obj -MD -MP -MF $(DEPDIR)/web100srv-web100-util.Tpo -c -o web100srv-web100-util.obj `if test -f 'web100-util.c'; then $(CYGPATH_W) 'web100-util.c'; else $(CYGPATH_W) '$(srcdir)/web100-util.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100srv-web100-util.Tpo $(DEPDIR)/web100srv-web100-util.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='web100-util.c' object='web100srv-web100-util.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100srv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100srv-web100-util.obj `if test -f 'web100-util.c'; then $(CYGPATH_W) 'web100-util.c'; else $(CYGPATH_W) '$(srcdir)/web100-util.c'; fi`
-
-web100srv-web100-pcap.o: web100-pcap.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100srv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100srv-web100-pcap.o -MD -MP -MF $(DEPDIR)/web100srv-web100-pcap.Tpo -c -o web100srv-web100-pcap.o `test -f 'web100-pcap.c' || echo '$(srcdir)/'`web100-pcap.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100srv-web100-pcap.Tpo $(DEPDIR)/web100srv-web100-pcap.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='web100-pcap.c' object='web100srv-web100-pcap.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100srv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100srv-web100-pcap.o `test -f 'web100-pcap.c' || echo '$(srcdir)/'`web100-pcap.c
-
-web100srv-web100-pcap.obj: web100-pcap.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100srv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100srv-web100-pcap.obj -MD -MP -MF $(DEPDIR)/web100srv-web100-pcap.Tpo -c -o web100srv-web100-pcap.obj `if test -f 'web100-pcap.c'; then $(CYGPATH_W) 'web100-pcap.c'; else $(CYGPATH_W) '$(srcdir)/web100-pcap.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100srv-web100-pcap.Tpo $(DEPDIR)/web100srv-web100-pcap.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='web100-pcap.c' object='web100srv-web100-pcap.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100srv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100srv-web100-pcap.obj `if test -f 'web100-pcap.c'; then $(CYGPATH_W) 'web100-pcap.c'; else $(CYGPATH_W) '$(srcdir)/web100-pcap.c'; fi`
-
-web100srv-web100-admin.o: web100-admin.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100srv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100srv-web100-admin.o -MD -MP -MF $(DEPDIR)/web100srv-web100-admin.Tpo -c -o web100srv-web100-admin.o `test -f 'web100-admin.c' || echo '$(srcdir)/'`web100-admin.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/web100srv-web100-admin.Tpo $(DEPDIR)/web100srv-web100-admin.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='web100-admin.c' object='web100srv-web100-admin.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100srv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o web100srv-web100-admin.o `test -f 'web100-admin.c' || echo '$(srcdir)/'`web100-admin.c
-
-web100srv-web100-admin.obj: web100-admin.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(web100srv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT web100srv-web100-admin.obj -MD -MP -MF $(DEPDIR)/web100srv-web100-admin.Tpo -c -o web100srv-web100-admin.obj `if test -f 'web100-admin.c'; then $(CYGPATH_W) 'web100-admin.c'; else $(CYGPATH_W) '$(srcdir)/web100-admin.c'; fi`
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/Applet/Makefile.am Fri May 7 04:37:48 2010
+++ /trunk/Applet/Makefile.am Mon Apr 30 13:46:39 2012
@@ -26,7 +26,7 @@
noinst_PROGRAMS = Tcpbw100.jar

Tcpbw100_JAVA = Tcpbw100.java
-Tcpbw100_jar_SOURCES = Tcpbw100.java
+Tcpbw100_jar_SOURCES = Tcpbw100.java StatusPanel.java Protocol.java Message.java UserAgentTools.java NDTConstants.java OsfwWorker.java NewFrame.java ResultsTextPane.java MessageType.java NDTUtils.java

Tcpbw100$(EXEEXT): $(Tcpbw100_OBJECTS) $(Tcpbw100_DEPENDENCIES)
@rm -f Tcpbw100$(EXEEXT)
@@ -35,18 +35,44 @@
echo timestamp > classTcpbw100.stamp; \
else :; fi

-classTcpbw100stamp: $(Tcpbw100_JAVA)
+#classTcpbw100stamp: $(Tcpbw100_JAVA)
+# if test -n "$?"; then \
+# echo '$(GCJ) $(NDTGCJFLAGS) $?' ; \
+# $(GCJ) $(NDTGCJFLAGS) $?; \
+# else :; fi
+# echo timestamp > classTcpbw100.stamp
+
+classTcpbw100stamp: $(Tcpbw100_jar_SOURCES)
if test -n "$?"; then \
echo '$(GCJ) $(NDTGCJFLAGS) $?' ; \
$(GCJ) $(NDTGCJFLAGS) $?; \
else :; fi
echo timestamp > classTcpbw100.stamp

-Tcpbw100.class: $(Tcpbw100_JAVA)
- $(GCJ) $(NDTGCJFLAGS) $(Tcpbw100_JAVA)
-
-Tcpbw100.jar: Tcpbw100.class
- $(NDTJAR) $(NDTJARFLAG) MANIFEST.MF Tcpbw100.jar Tcpbw100*.class Tcpbw100*.properties
+#Tcpbw100.class: $(Tcpbw100_JAVA)
+# $(GCJ) $(NDTGCJFLAGS) $(Tcpbw100_JAVA)
+
+#Tcpbw100.jar: Tcpbw100.class
+# $(NDTJAR) $(NDTJARFLAG) MANIFEST.MF Tcpbw100.jar Tcpbw100*.class Tcpbw100*.properties
+# echo timestamp > classTcpbw100.stamp
+#All classes to be compiled into their corresponding class files
+.java.class:
+ $(GCJ) $(NDTGCJFLAGS) $<
+
+#All classes to be compiled into their corresponding class files
+all.class: $(Tcpbw100_jar_SOURCES:.java=.class)
+#
+# $(GCJ) $(NDTGCJFLAGS) $(Tcpbw100_jar_SOURCES)
+
+#dependency management
+Tcpbw100.class: StatusPanel.class Protocol.class Message.class UserAgentTools.class NDTConstants.class OsfwWorker.class NewFrame.class ResultsTextPane.class MessageType.class NDTUtils.class
+Protocol.class: Message.class
+OsfwWorker.class: NDTConstants.class Message.class Protocol.class
+
+
+#Include all classes into jar
+Tcpbw100.jar: all.class
+ $(NDTJAR) $(NDTJARFLAG) MANIFEST.MF Tcpbw100.jar *.class Tcpbw100*.properties
echo timestamp > classTcpbw100.stamp

EXTRA_DIST = MANIFEST.MF Tcpbw100_msgs_ca_ES.properties Tcpbw100_msgs_nb_NO.properties Tcpbw100_msgs_en_US.properties Tcpbw100_msgs_nl_NL.properties Tcpbw100_msgs_fr_FR.properties Tcpbw100_msgs_ru_RU.properties Tcpbw100_msgs_pt_BR.properties
=======================================
--- /trunk/Applet/Tcpbw100.java Fri Aug 5 14:03:19 2011
+++ /trunk/Applet/Tcpbw100.java Mon Apr 30 13:46:39 2012
@@ -1,3327 +1,3865 @@
/*
-Copyright 2003 University of Chicago. All rights reserved.
-The Web100 Network Diagnostic Tool (NDT) is distributed subject to
-the following license conditions:
-SOFTWARE LICENSE AGREEMENT
-Software: Web100 Network Diagnostic Tool (NDT)
-
-1. The "Software", below, refers to the Web100 Network Diagnostic Tool (NDT)
-(in either source code, or binary form and accompanying documentation). Each
-licensee is addressed as "you" or "Licensee."
-
-2. The copyright holder shown above hereby grants Licensee a royalty-free
-nonexclusive license, subject to the limitations stated herein and U.S. Government
-license rights.
-
-3. You may modify and make a copy or copies of the Software for use within your
-organization, if you meet the following conditions:
- a. Copies in source code must include the copyright notice and this Software
- License Agreement.
- b. Copies in binary form must include the copyright notice and this Software
- License Agreement in the documentation and/or other materials provided with the copy.
-
-4. You may make a copy, or modify a copy or copies of the Software or any
-portion of it, thus forming a work based on the Software, and distribute copies
-outside your organization, if you meet all of the following conditions:
- a. Copies in source code must include the copyright notice and this
- Software License Agreement;
- b. Copies in binary form must include the copyright notice and this
- Software License Agreement in the documentation and/or other materials
- provided with the copy;
- c. Modified copies and works based on the Software must carry prominent
- notices stating that you changed specified portions of the Software.
-
-5. Portions of the Software resulted from work developed under a U.S. Government
-contract and are subject to the following license: the Government is granted
-for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable
-worldwide license in this computer software to reproduce, prepare derivative
-works, and perform publicly and display publicly.
-
-6. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" WITHOUT WARRANTY
-OF ANY KIND. THE COPYRIGHT HOLDER, THE UNITED STATES, THE UNITED STATES
-DEPARTMENT OF ENERGY, AND THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT,
-(2) DO NOT ASSUME ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY,
-COMPLETENESS, OR USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE
-OF THE SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4) DO NOT WARRANT
-THAT THE SOFTWARE WILL FUNCTION UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT
-ANY ERRORS WILL BE CORRECTED.
-
-7. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT HOLDER, THE
-UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, OR THEIR EMPLOYEES:
-BE LIABLE FOR ANY INDIRECT, INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE
-DAMAGES OF ANY KIND OR NATURE, INCLUDING BUT NOT LIMITED TO LOSS OF PROFITS
-OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, WHETHER SUCH LIABILITY IS ASSERTED
-ON THE BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR
-OTHERWISE, EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE POSSIBILITY OF
-SUCH LOSS OR DAMAGES.
-The Software was developed at least in part by the University of Chicago,
-as Operator of Argonne National Laboratory (http://miranda.ctd.anl.gov:7123/).
+ Copyright 2003 University of Chicago. All rights reserved.
+ The Web100 Network Diagnostic Tool (NDT) is distributed subject to
+ the following license conditions:
+ SOFTWARE LICENSE AGREEMENT
+ Software: Web100 Network Diagnostic Tool (NDT)
+
+ 1. The "Software", below, refers to the Web100 Network Diagnostic Tool (NDT)
+ (in either source code, or binary form and accompanying documentation). Each
+ licensee is addressed as "you" or "Licensee."
+
+ 2. The copyright holder shown above hereby grants Licensee a royalty-free
+ nonexclusive license, subject to the limitations stated herein and U.S. Government
+ license rights.
+
+ 3. You may modify and make a copy or copies of the Software for use within your
+ organization, if you meet the following conditions:
+ a. Copies in source code must include the copyright notice and this Software
+ License Agreement.
+ b. Copies in binary form must include the copyright notice and this Software
+ License Agreement in the documentation and/or other materials provided with the copy.
+
+ 4. You may make a copy, or modify a copy or copies of the Software or any
+ portion of it, thus forming a work based on the Software, and distribute copies
+ outside your organization, if you meet all of the following conditions:
+ a. Copies in source code must include the copyright notice and this
+ Software License Agreement;
+ b. Copies in binary form must include the copyright notice and this
+ Software License Agreement in the documentation and/or other materials
+ provided with the copy;
+ c. Modified copies and works based on the Software must carry prominent
+ notices stating that you changed specified portions of the Software.
+
+ 5. Portions of the Software resulted from work developed under a U.S. Government
+ contract and are subject to the following license: the Government is granted
+ for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable
+ worldwide license in this computer software to reproduce, prepare derivative
+ works, and perform publicly and display publicly.
+
+ 6. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" WITHOUT WARRANTY
+ OF ANY KIND. THE COPYRIGHT HOLDER, THE UNITED STATES, THE UNITED STATES
+ DEPARTMENT OF ENERGY, AND THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT,
+ (2) DO NOT ASSUME ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY,
+ COMPLETENESS, OR USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE
+ OF THE SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4) DO NOT WARRANT
+ THAT THE SOFTWARE WILL FUNCTION UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT
+ ANY ERRORS WILL BE CORRECTED.
+
+ 7. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT HOLDER, THE
+ UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, OR THEIR EMPLOYEES:
+ BE LIABLE FOR ANY INDIRECT, INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE
+ DAMAGES OF ANY KIND OR NATURE, INCLUDING BUT NOT LIMITED TO LOSS OF PROFITS
+ OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, WHETHER SUCH LIABILITY IS ASSERTED
+ ON THE BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR
+ OTHERWISE, EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE POSSIBILITY OF
+ SUCH LOSS OR DAMAGES.
+ The Software was developed at least in part by the University of Chicago,
+ as Operator of Argonne National Laboratory (http://miranda.ctd.anl.gov:7123/).
*/
-import java.io.*;
-import java.net.*;
-import java.net.Socket;
-import java.awt.*;
-import java.awt.event.*;
-import java.awt.event.ActionListener;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.Panel;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.StringSelection;
import java.awt.event.ActionEvent;
-import java.awt.datatransfer.*;
-import java.util.*;
-import java.lang.*;
-import javax.swing.JLabel;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.MalformedURLException;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.SocketException;
+import java.net.URL;
+import java.net.UnknownHostException;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.Date;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.StringTokenizer;
+
+import javax.swing.BorderFactory;
+import javax.swing.BoxLayout;
import javax.swing.JApplet;
-import javax.swing.JFrame;
-import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
-import javax.swing.BorderFactory;
-import javax.swing.JTextPane;
-import javax.swing.text.BadLocationException;
-import javax.swing.JOptionPane;
-import javax.swing.BoxLayout;
import javax.swing.JSpinner;
+import javax.swing.JTextArea;
import javax.swing.SpinnerNumberModel;
-import javax.swing.JComboBox;
-import javax.swing.JProgressBar;
-
-// Workaround for remote JavaScript start method
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-
-public class Tcpbw100 extends JApplet implements ActionListener
-{
- private static final String VERSION = "3.6.4";
- private static final byte TEST_MID = (1 << 0);
- private static final byte TEST_C2S = (1 << 1);
- private static final byte TEST_S2C = (1 << 2);
- private static final byte TEST_SFW = (1 << 3);
- private static final byte TEST_STATUS = (1 << 4);
- private static final byte TEST_META = (1 << 5);
-
- private static final String META_CLIENT_OS = "client.os.name";
- private static final String META_BROWSER_OS = "client.browser.name";
- private static final String META_CLIENT_KERNEL_VERSION = "client.kernel.version";
- private static final String META_CLIENT_VERSION = "client.version";
-
- /* we really should do some clean-up in this java code... maybe later ;) */
- private static final byte COMM_FAILURE = 0;
- private static final byte SRV_QUEUE = 1;
- private static final byte MSG_LOGIN = 2;
- private static final byte TEST_PREPARE = 3;
- private static final byte TEST_START = 4;
- private static final byte TEST_MSG = 5;
- private static final byte TEST_FINALIZE = 6;
- private static final byte MSG_ERROR = 7;
- private static final byte MSG_RESULTS = 8;
- private static final byte MSG_LOGOUT = 9;
- private static final byte MSG_WAITING = 10;
-
- private static final int SFW_NOTTESTED = 0;
- private static final int SFW_NOFIREWALL = 1;
- private static final int SFW_UNKNOWN = 2;
- private static final int SFW_POSSIBLE = 3;
-
- private static final double VIEW_DIFF = 0.1;
-
- JTextArea diagnosis, statistics;
- MyTextPane results;
- String inresult, outresult, errmsg;
- JButton startTest;
- JButton disMiss, disMiss2;
- JButton copy, copy2;
- JButton deTails;
- JButton sTatistics;
- JButton mailTo;
- JButton options;
- JCheckBox defaultTest, preferIPv6;
- JSpinner numOfTests = new JSpinner();
- String[] delays = { "immediate", "1min","5mins","10mins","30mins","2hours","12hours","1day" };
- JComboBox delay;
-
- boolean Randomize, failed, cancopy;
- URL location;
- clsFrame f, ff, optionsFrame;
- String s;
- double t;
- int ECNEnabled, NagleEnabled, MSSSent, MSSRcvd;
- int SACKEnabled, TimestampsEnabled, WinScaleRcvd, WinScaleSent;
- int FastRetran, AckPktsOut, SmoothedRTT, CurrentCwnd, MaxCwnd;
- int SndLimTimeRwin, SndLimTimeCwnd, SndLimTimeSender;
- int SndLimTransRwin, SndLimTransCwnd, SndLimTransSender, MaxSsthresh;
- int SumRTT, CountRTT, CurrentMSS, Timeouts, PktsRetrans;
- int SACKsRcvd, DupAcksIn, MaxRwinRcvd, MaxRwinSent;
- int DataPktsOut, Rcvbuf, Sndbuf, AckPktsIn, DataBytesOut;
- int PktsOut, CongestionSignals, RcvWinScale;
- int pkts, lth=8192, CurrentRTO;
- int c2sData, c2sAck, s2cData, s2cAck;
- // added for mailto url
- protected URL targetURL;
- private String TARGET1 = "U";
- private String TARGET2 = "H";
- String emailText;
- double s2cspd, c2sspd, sc2sspd, ss2cspd;
- int ssndqueue;
- double sbytes;
-
- /*************************************************************************
- * JavaScript access API extension
- * Added by Seth Peery and Gregory Wilson, Virginia Tech
- * October 28, 2009
- * This section adds classwide variables, written to at runtime,
- * which are then exposed by public accessor methods that can be called
- * from web applications using NDT as a back-end.
- */
-
- private double pub_c2sspd = 0.0;
- private double pub_s2cspd = 0.0;
- private int pub_CurRwinRcvd = 0; // source variable does not exist
- private int pub_MaxRwinRcvd = 0;
- private int pub_MinRTT = 0; // source variable does not exist
- private int pub_MaxRTT = 0; // source variable does not exist
- private double pub_loss = 0.0;
- private double pub_avgrtt = 0.0;
- private int pub_MinRTO = 0; // source variable does not exist
- private int pub_MaxRTO = 0; // source variable does not exist
- private int pub_CurRTO = 0;
- // private String pub_CWNDpeaks = ""; // source variable does not exist
- private int pub_SACKsRcvd = 0;
- private String pub_osVer = "unknown";
- private String pub_javaVer = "unknown";
- private String pub_host = "unknown";
- private String pub_osName = "unknown";
- private String pub_osArch = "unknown";
- private int pub_mismatch = 0;
- private int pub_Bad_cable = 0;
- private int pub_congestion = 0;
- private double pub_cwndtime = 0.0;
- private double pub_pctRcvrLimited = 0.0;
- private String pub_AccessTech = "unknown";
- private String pub_natBox = "unknown";
- private int pub_DupAcksOut = 0;
- private Date pub_TimeStamp;
- private String pub_isReady = new String("no");
- private String pub_clientIP = "unknown";
- private int pub_jitter = 0;
- private int pub_Timeouts = 0;
- private String pub_errmsg = "Test not run.";
- private String pub_diagnosis = "Test not run.";
- private String pub_statistics = "Test not run.";
- private String pub_status = "notStarted";
- private double pub_time = 0.0;
- private int pub_bytes = 0;
- private String isAutoRun;
- private String userAgent = null;
-
- /**
- * Accessor methods for public variables
- **/
-
- public String get_c2sspd()
- {
- // Expressed as MiB using base 10
- return Double.toString((pub_c2sspd));
- }
-
- public String get_s2cspd()
- {
- // Expressed as MiB using base 10
- return Double.toString(pub_s2cspd);
- }
-
- public String get_CurRwinRcvd()
- {
- return Integer.toString(pub_CurRwinRcvd);
- }
-
- public String get_MaxRwinRcvd()
- {
- return Integer.toString(pub_MaxRwinRcvd);
- }
-
- public String get_Ping()
- {
- return Integer.toString(pub_MinRTT);
- }
-
- public String get_MaxRTT()
- {
- return Integer.toString(pub_MaxRTT);
- }
-
- public String get_loss()
- {
- return Double.toString(pub_loss);
- }
-
- public String get_avgrtt()
- {
- return Double.toString(pub_avgrtt);
- }
-
- /* public String get_MinRTO()
- {
- return pub_MinRTO;
- }*/
-
- /* public String get_MaxRTO()
- {
- return pub_MaxRTO;
- }*/
-
- public String get_CurRTO()
- {
- return Integer.toString(pub_CurRTO);
- }
-
-/*
- public String get_CWNDpeaks()
- {
- return pub_CWNDpeaks;
- } */
-
- public String get_SACKsRcvd()
- {
- return Integer.toString(pub_SACKsRcvd);
- }
-
- public String get_osVer()
- {
- return pub_osVer;
- }
-
- public String get_javaVer()
- {
- return pub_javaVer;
- }
-
- public String get_host()
- {
- return pub_host;
- }
-
- public String get_osName()
- {
- return pub_osName;
- }
-
- public String get_osArch()
- {
- return pub_osArch;
- }
-
- public String get_mismatch()
- {
- String result;
- if (pub_mismatch==0) {
- result = "no";
- } else {
- result = "yes";
- }
- return result;
- }
-
- public String get_Bad_cable()
- {
- String result;
- if (pub_Bad_cable ==1) {
- result = "yes";
- } else {
- result = "no";
- }
- return result;
- }
-
- public String get_congestion()
- {
- String result;
- if (pub_congestion == 1) {
- result = "yes";
- } else {
- result = "no";
- }
- return result;
- }
-
- public String get_cwndtime()
- {
- return Double.toString(pub_cwndtime);
- }
-
- public String get_AccessTech()
- {
- return pub_AccessTech;
- }
-
- public String get_rcvrLimiting()
- {
- return Double.toString(pub_pctRcvrLimited);
- }
-
- public String get_optimalRcvrBuffer()
- {
- return Integer.toString(pub_MaxRwinRcvd*1024);
- }
-
- public String get_clientIP()
- {
- return pub_clientIP;
- }
-
- public String get_natStatus()
- {
- return pub_natBox;
- }
-
- public String get_DupAcksOut()
- {
- return Integer.toString(pub_DupAcksOut);
- }
-
- public String get_TimeStamp()
- {
- String result = "unknown";
- if (pub_TimeStamp != null) {
- result = pub_TimeStamp.toString();
- }
- return result;
- }
-
- public String isReady()
- {
-
- // if ((pub_isReady == null) || (pub_isReady.equals(""))) {
- // pub_isReady = "no";
- // }
- // String result = "foo";
-
- //if (failed) {
- // pub_isReady = "failed1";
- //}
- //result = pub_isReady;
- // return result;
- return pub_isReady;
- }
-
- public String get_jitter()
- {
- return Integer.toString((pub_MaxRTT - pub_MinRTT));
- }
-
- public String get_WaitSec()
- {
- return Integer.toString((pub_CurRTO * pub_Timeouts)/1000);
- }
-
- public String get_errmsg()
- {
- //String result = "Test not run";
- //result = pub_errmsg;
- //return result;
- return pub_errmsg;
- }
-
- public String get_diagnosis()
- {
- return pub_diagnosis;
- }
-
- public String get_statistics()
- {
- return pub_statistics;
- }
-
- public String get_status()
- {
- return pub_status;
- }
-
- public String get_instSpeed()
- {
- return Double.toString((8.0 * pub_bytes) / (System.currentTimeMillis() - pub_time));
- }
-
- // "Remote Control" function - invoke NDT' runtest() method from the API
- public void run_test()
- {
- // The Java security model considers calling a method that opens a socket
- // from JavaScript to be a privileged action. By using
- // java.security.privilegedAction here, we can grant JavaScript the
- // same expanded privileges as the signed applet to open a socket.
- AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- pub_errmsg = "Test in progress.";
- runtest();
- return null;
- }
- });
- }
-
- public String getUserAgent() {
- return userAgent;
- }
-
- public void setUserAgent(String userAgent) {
- this.userAgent = userAgent;
- }
-
-/**
- End of accessor methods
-**/
- /************************************************************************/
-
- /**
- * Added by Martin Sandsmark, UNINETT AS
- * Internationalization
- */
- private Locale locale;
- private ResourceBundle messages;
- private String lang="en";
- private String country="US";
- //private static String lang="nb";
- //private static String country="NO";
- /***/
-
- int half_duplex, congestion, bad_cable, mismatch;
- double mylink;
- double loss, estimate, avgrtt, spd, waitsec, timesec, rttsec;
- double order, rwintime, sendtime, cwndtime, rwin, swin, cwin;
- double aspd;
-
- boolean isApplication = false;
- boolean testInProgress = false;
- String host = null;
- String tmpstr, tmpstr2;
- byte tests = TEST_MID | TEST_C2S | TEST_S2C | TEST_SFW | TEST_STATUS | TEST_META;
- int c2sResult = SFW_NOTTESTED;
- int s2cResult = SFW_NOTTESTED;
-
- public void showStatus(String msg)
- {
- if (!isApplication) {
- super.showStatus(msg);
- }
- }
-
- public String getParameter(String name)
- {
- if (!isApplication) {
- return super.getParameter(name);
- }
- return null;
- }
-
-
- public void init() {
- if (getParameter("country") != null) country = getParameter("country");
- if (getParameter("language") != null) lang = getParameter("language");
-
- try {
- locale = new Locale(lang, country);
- messages = ResourceBundle.getBundle("Tcpbw100_msgs", locale);
- } catch (Exception e) {
- JOptionPane.showMessageDialog(null, "Error while loading language files:\n" + e.getMessage());
- e.printStackTrace();
- }
-
- getContentPane().setLayout(new BorderLayout());
- showStatus(messages.getString("ready"));
- failed = false ;
- Randomize = false;
- cancopy = false;
- results = new MyTextPane();
- results.append("TCP/Web100 Network Diagnostic Tool v" + VERSION + "\n");
- results.setEditable(false);
- getContentPane().add(new JScrollPane(results));
- results.append(messages.getString("clickStart") + "\n");
- Panel mPanel = new Panel();
- startTest = new JButton(messages.getString("start"));
- startTest.addActionListener(this);
- mPanel.add(startTest);
- sTatistics = new JButton(messages.getString("statistics"));
- sTatistics.addActionListener(this);
- if (getParameter("disableStatistics") == null) {
- mPanel.add(sTatistics);
- }
- sTatistics.setEnabled(false);
- deTails = new JButton(messages.getString("moreDetails"));
- deTails.addActionListener(this);
- if (getParameter("disableDetails") == null) {
- mPanel.add(deTails);
- }
- deTails.setEnabled(false);
- mailTo = new JButton(messages.getString("reportProblem"));
- mailTo.addActionListener(this);
- if (getParameter("disableMailto") == null) {
- mPanel.add(mailTo);
- }
- mailTo.setEnabled(false);
- options = new JButton(messages.getString("options") + "...");
- options.addActionListener(new ActionListener() {
-
- public void actionPerformed(ActionEvent e) {
- options.setEnabled(false);
- showOptions();
- options.setEnabled(true);
- }
-
- });
- if (getParameter("disableOptions") == null) {
- mPanel.add(options);
- }
- getContentPane().add(BorderLayout.SOUTH, mPanel);
- preferIPv6 = new JCheckBox(messages.getString("preferIPv6"));
- preferIPv6.setSelected(true);
- defaultTest = new JCheckBox(messages.getString("defaultTests"));
- defaultTest.setSelected(true);
- defaultTest.setEnabled(false);
- SpinnerNumberModel model = new SpinnerNumberModel();
- model.setMinimum(new Integer(0));
- model.setValue(new Integer(1));
- numOfTests.setModel(model);
- numOfTests.setPreferredSize(new Dimension(60, 20));
- delay = new JComboBox();
- for (int i = 0; i < delays.length; i++) {
- delay.addItem(messages.getString(delays[i]));
- }
- delay.setSelectedIndex(0);
-
- //Autorun functionality
- isAutoRun = getParameter("autoRun");
- if ((isAutoRun != null) && isAutoRun.equals("true")) {
- pub_errmsg = "Test in progress.";
- runtest();
- }
-
- }
-
-
- class MyTextPane extends JTextPane
- {
- public void append(String text)
- {
- try {
- getStyledDocument().insertString(getStyledDocument().getLength(), text, null);
- }
- catch (BadLocationException e) {
- System.out.println("WARNING: failed to append text to the text pane! [" + text + "]");
- }
- }
-
- public void insertComponent(Component c)
- {
- setSelectionStart(results.getStyledDocument().getLength());
- setSelectionEnd(results.getStyledDocument().getLength());
- super.insertComponent(c);
- }
- }
-
- class StatusPanel extends JPanel
- {
- private int _testNo;
- private int _testsNum;
- private boolean _stop = false;
-
- private JLabel testNoLabel = new JLabel();
- private JButton stopButton;
- private JProgressBar progressBar = new JProgressBar();
-
- StatusPanel(int testsNum) {
- this._testNo = 1;
- this._testsNum = testsNum;
-
- setTestNoLabelText();
- if (getParameter("enableMultipleTests") != null) {
- add(testNoLabel);
- }
- progressBar.setMinimum(0);
- progressBar.setMaximum(_testsNum);
- progressBar.setValue(0);
- progressBar.setStringPainted(true);
- if (_testsNum == 0) {
- progressBar.setString("");
- progressBar.setIndeterminate(true);
- }
- else {
- progressBar.setString(messages.getString("initialization"));
- }
- add(progressBar);
- stopButton= new JButton(messages.getString("stop"));
- stopButton.addActionListener(new ActionListener() {
-
- public void actionPerformed(ActionEvent e) {
- _stop = true;
- stopButton.setEnabled(false);
- StatusPanel.this.setText(messages.getString("stopping"));
- }
-
- });
- if (getParameter("enableMultipleTests") != null) {
- add(stopButton);
- }
- }
-
- private void setTestNoLabelText() {
- testNoLabel.setText(messages.getString("test") + " " + _testNo + " " + messages.getString("of") + " " +_testsNum);
- }
-
- public boolean wantToStop() {
- return _stop;
- }
-
- public void endTest() {
- progressBar.setValue(_testNo);
- _testNo++;
- setTestNoLabelText();
- }
-
- public void setText(String text) {
- if (!progressBar.isIndeterminate()) {
- progressBar.setString(text);
- }
- }
- }
-
- class TestWorker implements Runnable
- {
- public void run()
- {
- if (!testInProgress) {
- int testNo = 1;
- int testsNum = ((Integer)numOfTests.getValue()).intValue();
- testInProgress = true;
- diagnose();
- statistics();
- startTest.setEnabled(false);
- deTails.setEnabled(false);
- sTatistics.setEnabled(false);
- mailTo.setEnabled(false);
- options.setEnabled(false);
- numOfTests.setEnabled(false);
- StatusPanel sPanel = new StatusPanel(testsNum);
- getContentPane().add(BorderLayout.NORTH, sPanel);
- getContentPane().validate();
- getContentPane().repaint();
-
- try {
- while (true) {
- if (sPanel.wantToStop()) {
- break;
- }
- if (testsNum == 0) {
- results.append("\n** " + messages.getString("startingTest") + " " + testNo + " **\n");
- }
- else {
- results.append("\n** " + messages.getString("startingTest") + " " + testNo + " " + messages.getString("of") + " " + testsNum + " **\n");
- }
- dottcp(sPanel);
- if (testNo == testsNum) {
- break;
- }
- if (sPanel.wantToStop()) {
- break;
- }
- sPanel.setText("");
- sPanel.endTest();
- testNo += 1;
- deTails.setEnabled(true);
- sTatistics.setEnabled(true);
- mailTo.setEnabled(true);
- options.setEnabled(true);
- statistics.append("\n** " + messages.getString("test") + " " + testNo + " **\n");
- diagnosis.append("\n** " + messages.getString("test") + " " + testNo + " **\n");
- try {
- switch (delay.getSelectedIndex()) {
- case 1:
- results.append("\n** " + messages.getString("sleep1m") + " **\n");
- Thread.sleep(1000 * 60);
- break;
- case 2:
- results.append("\n** " + messages.getString("sleep5m") + " **\n");
- Thread.sleep(1000 * 60 * 5);
- break;
- case 3:
- results.append("\n** " + messages.getString("sleep10m") + " **\n");
- Thread.sleep(1000 * 60 * 10);
- break;
- case 4:
- results.append("\n** " + messages.getString("sleep30m") + " **\n");
- Thread.sleep(1000 * 60 * 30);
- break;
- case 5:
- results.append("\n** " + messages.getString("sleep2h") + " **\n");
- Thread.sleep(1000 * 60 * 120);
- break;
- case 6:
- results.append("\n** " + messages.getString("sleep12h") + " **\n");
- Thread.sleep(1000 * 60 * 720);
- break;
- case 7:
- results.append("\n** " + messages.getString("sleep1d") + " **\n");
- Thread.sleep(1000 * 60 * 1440);
- break;
- }
- }
- catch (InterruptedException e) {
- // do nothing.
- }
- }
- } catch(IOException e) {
- e.printStackTrace();
- failed=true;
- errmsg = messages.getString("serverBusy30s") + "\n";
- }
-
- if (failed) {
- results.append(errmsg);
-
- pub_isReady = "failed";
- pub_errmsg = errmsg;
- }
-
- deTails.setEnabled(true);
- sTatistics.setEnabled(true);
- mailTo.setEnabled(true);
- options.setEnabled(true);
- numOfTests.setEnabled(true);
- showStatus(messages.getString("done2"));
- results.append("\n" + messages.getString("clickStart2") + "\n");
- startTest.setEnabled(true);
- testInProgress = false;
- getContentPane().remove(sPanel);
- getContentPane().validate();
- getContentPane().repaint();
- }
- }
- }
-
- synchronized public void runtest() {
- pub_status = "notStarted";
- new Thread(new TestWorker()).start();
+
+/*
+ * Naming convention used: Hungarian, with the following details
+ * _VarName: Instance variables
+ * __Varname: Static variables (instead of c_VarName to reduce length)
+ * iVarName: Integer variable
+ * sVarName: String variable
+ * bVarName: boolean variable
+ * dVarName: double variable
+ * _iaVarName: Integer "Array" variable
+ * ...and some other self descriptive examples are..
+ * _rscBundleMessages : class scoped ResourceBundle Variable called "Messages"
+ * _cmboboxIpV6 : Class scoped combo-box variable to indicate IpV6 choice..
+ *
+ * Some variables which were called "pub_xxx" are declared to have "accessor" methods for use by
+ * other clients. I have left this untouched. These are private variables. Though the type is
+ * not evident from the declaration immediately, the "getter/setter" methods for them will immediately
+ * indicate their types
+ *
+ */
+
+/**
+ * Main Applet class that creates UI, defines tests and interprets results from
+ * the tests.
+ *
+ * */
+public class Tcpbw100 extends JApplet implements ActionListener {
+
+ /**
+ * Compiler generated UID that does not follow naming convention, and is not
+ * related to functionality itself
+ */
+ private static final long serialVersionUID = -2030725073538492542L;
+
+ JTextArea _txtDiagnosis, _txtStatistics;
+ ResultsTextPane _resultsTxtPane;
+ // String inresult, outresult; //comment out unused variables
+ String _sErrMsg;
+ JButton _buttonStartTest;
+ // TODO: Could use just one button for dismiss and copy. For later
release
+ JButton _buttonDismiss, _buttonStatsDismiss;
+ JButton _buttonCopy, _buttonStatsCopy;
+ JButton _buttonDetails;
+ JButton _buttonStatistics;
+ JButton _buttonMailTo;
+ JButton _buttonOptions;
+ JCheckBox _chkboxDefaultTest, _chkboxPreferIPv6;
+ JSpinner _spinnerTestCount = new JSpinner();
+ String[] _saDelays = { "immediate", "1min", "5mins", "10mins",
"30mins",
+ "2hours", "12hours", "1day" };
+ JComboBox _cmboboxDelay;
+
+ boolean _bRandomize;
+ boolean _bFailed, _bCanCopy;
+ // URL location; //unused, hence commenting out
+ NewFrame _frameWeb100Vars, _frameDetailedStats, _frameOptions;
+ // String s; Unused, commenting out
+ double _dTime;
+ int _iECNEnabled, _iNagleEnabled, MSSSent, MSSRcvd;
+ int _iSACKEnabled, _iTimestampsEnabled, _iWinScaleRcvd,
_iWinScaleSent;
+ int _iFastRetran, _iAckPktsOut, _iSmoothedRTT, _iCurrentCwnd,
_iMaxCwnd;
+ int _iSndLimTimeRwin, _iSndLimTimeCwnd, _iSndLimTimeSender;
+ int _iSndLimTransRwin, _iSndLimTransCwnd, _iSndLimTransSender,
+ _iMaxSsthresh;
+ int _iSumRTT, _iCountRTT, _iCurrentMSS, _iTimeouts, _iPktsRetrans;
+ int _iSACKsRcvd, _iDupAcksIn, _iMaxRwinRcvd, _iMaxRwinSent;
+ int _iDataPktsOut, _iRcvbuf, _iSndbuf, _iAckPktsIn, _iDataBytesOut;
+ int _iPktsOut, _iCongestionSignals, _iRcvWinScale;
+ // int _iPkts, _iLength=8192, _iCurrentRTO;
+ int _iPkts, _iLength = NDTConstants.PREDEFINED_BUFFER_SIZE,
_iCurrentRTO;
+ int _iC2sData, _iC2sAck, _iS2cData, _iS2cAck;
+ // added for mailto url
+ protected URL _targetURL;
+
+ String _sEmailText;
+ double _dS2cspd, _dC2sspd, _dSc2sspd, _dSs2cspd;
+ int _iSsndqueue;
+ double _dSbytes;
+
+ /**
+ * Added by Martin Sandsmark, UNINETT AS Internationalization
+ */
+ private Locale _localeObj;
+ private ResourceBundle _resBundDisplayMsgs;
+ private String _sLang = "en";
+ private String _sCountry = "US";
+ // private static String lang="nb";
+ // private static String country="NO";
+ /***/
+
+ // these variables are self-explanatory. Do not follow naming
convention,
+ // but left that way
+ int half_duplex, congestion, bad_cable, mismatch;
+ double mylink;
+ double loss, estimate, avgrtt, spd, waitsec, timesec, rttsec;
+ double order, rwintime, sendtime, cwndtime, rwin, swin, cwin;
+ double aspd;
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/FILES Fri May 28 04:57:08 2010
+++ /trunk/FILES Mon Apr 30 13:46:39 2012
@@ -41,10 +41,10 @@
in the 'Applet' sub-directory
Makefile.am - Used by configure to build the runnable Makefile
Makefile.in - Used by configure to build the runnable Makefile
-Tcpbw100.java - The source code for the client side java applet
-Tcpbw100.class - The java class version of the client applet
-Tcpbw100$1.class - A java subclass of the client applet
-Tcpbw100$clsFrame.class - A java subclass of the client applet
+Tcpbw100.java, StatusPanel.java, Protocol.java, Message.java, UserAgentTools.java, NDTConstants.java, OsfwWorker.java, NewFrame.java, ResultsTextPane.java, MessageType.java, NDTUtils.java
+ - The source code for the client side java applet and
related classes
+*.class - Corresponding java class versions of the client applet and related classes
+Tcpbw100$N.class - java subclasses of the client applet
Tcpbw100.jar - A java JAR file, with the Tcpbw100.class files

in the 'src' sub-directory
=======================================
--- /trunk/src/Makefile.am Sun May 8 04:04:21 2011
+++ /trunk/src/Makefile.am Mon Apr 30 13:46:39 2012
@@ -33,8 +33,9 @@
bin_PROGRAMS = web100clt
endif

-web100clt_SOURCES = web100clt.c network.c usage.c logging.c utils.c protocol.c \
- test_sfw_clt.c test_mid_clt.c test_c2s_clt.c test_s2c_clt.c test_meta_clt.c
+web100clt_SOURCES = web100clt.c network.c usage.c logging.c utils.c protocol.c runningtest.c ndtptestconstants.c \
+ test_sfw_clt.c test_mid_clt.c test_c2s_clt.c test_s2c_clt.c test_meta_clt.c strlutils.c \
+ test_results_clt.c
web100clt_LDADD = $(I2UTILLIBDEPS) -lpthread $(ZLIB)
web100clt_CPPFLAGS ='-DBASEDIR="$(ndtdir)"'
web100clt_DEPENDENCIES = $(I2UTILLIBDEPS)
@@ -43,27 +44,29 @@
genplot_LDADD = $(NDTLIBS) $(I2UTILLIBDEPS)
genplot_CPPFLAGS ='-DBASEDIR="$(ndtdir)"'

-analyze_SOURCES = analyze.c usage.c logging.c
+analyze_SOURCES = analyze.c usage.c logging.c runningtest.c ndtptestconstants.c strlutils.c
analyze_LDADD = $(NDTLIBS) $(I2UTILLIBDEPS) $(ZLIB)
analyze_CPPFLAGS ='-DBASEDIR="$(ndtdir)"'

-fakewww_SOURCES = fakewww.c troute.c troute6.c tr-tree.c tr-tree6.c network.c usage.c logging.c
+fakewww_SOURCES = fakewww.c troute.c troute6.c tr-tree.c tr-tree6.c network.c usage.c logging.c \
+ runningtest.c ndtptestconstants.c strlutils.c
fakewww_LDADD = $(I2UTILLIBDEPS) $(ZLIB)
fakewww_CPPFLAGS ='-DBASEDIR="$(ndtdir)"'

-web100srv_SOURCES = web100srv.c web100-util.c web100-pcap.c web100-admin.c \
- network.c usage.c utils.c mrange.c logging.c testoptions.c \
- protocol.c test_sfw_srv.c test_meta_srv.c ndt_odbc.c
+web100srv_SOURCES = web100srv.c web100-util.c web100-pcap.c web100-admin.c runningtest.c \
+ network.c usage.c utils.c mrange.c logging.c testoptions.c ndtptestconstants.c \
+ protocol.c test_sfw_srv.c test_meta_srv.c ndt_odbc.c strlutils.c heuristics.c \
+ test_c2s_srv.c test_s2c_srv.c test_mid_srv.c
web100srv_LDFLAGS = $(NDTLDFLAGS) $(I2UTILLDFLAGS)
web100srv_LDADD = $(NDTLIBS) $(I2UTILLIBS) $(I2UTILLIBDEPS) -lpthread $(ZLIB)
web100srv_CPPFLAGS ='-DBASEDIR="$(ndtdir)"'
web100srv_DEPENDENCIES = $(I2UTILLIBDEPS)

-viewtrace_SOURCES = viewtrace.c usage.c logging.c utils.c
+viewtrace_SOURCES = viewtrace.c usage.c logging.c utils.c runningtest.c ndtptestconstants.c strlutils.c
viewtrace_LDADD = $(NDTLIBS) $(I2UTILLIBDEPS) $(ZLIB)
viewtrace_CPPFLAGS ='-DBASEDIR="$(ndtdir)"'

-tr_mkmap_SOURCES = tr-mkmap.c tr-tree.c tr-tree6.c usage.c logging.c
+tr_mkmap_SOURCES = tr-mkmap.c tr-tree.c tr-tree6.c usage.c logging.c runningtest.c ndtptestconstants.c strlutils.c
tr_mkmap_LDADD = $(NDTLIBS) $(I2UTILLIBDEPS) $(ZLIB)
tr_mkmap_CPPFLAGS ='-DBASEDIR="$(ndtdir)"'

@@ -84,4 +87,4 @@
$(I2UTILLIBMAKE)

EXTRA_DIST = clt_tests.h logging.h mrange.h network.h protocol.h testoptions.h test_sfw.h test_meta.h \
- troute.h tr-tree.h usage.h utils.h varinfo.h web100-admin.h web100srv.h ndt_odbc.h
+ troute.h tr-tree.h usage.h utils.h varinfo.h web100-admin.h web100srv.h ndt_odbc.h runningtest.h ndtptestconstants.h
=======================================
--- /trunk/src/analyze.c Wed Apr 8 12:34:07 2009
+++ /trunk/src/analyze.c Mon Apr 30 13:46:39 2012
@@ -34,19 +34,20 @@
#include "logging.h"

#define LOGFILE "web100srv.log"
+#define PROTOLOGFILE "web100srvprotocol.log" /* protocol validation log */
#define WEB100_VARS 128 /*number of web100 variables you want to access*/
#define WEB100_FILE "web100_variables" /*names of the variables to access*/
#define BUFFSIZE 512

-char buff[BUFFSIZE+1];
-int window = 64000;
-int randomize=0;
+char buff[BUFFSIZE + 1];int window = 64000;
+int randomize = 0;
char *rmt_host;
-char *VarFileName=NULL;
-char *LogFileName=NULL;
+char *VarFileName = NULL;
+char *LogFileName = NULL;
+char *ProtoLogFileName = NULL; // Log file used to log protocol validation logs
double avgrtt, loss, loss2, rttsec, bw, bw2, rwin, swin, cwin, speed;
double rwintime, cwndtime, sendtime, timesec;
-int n, m, one=1;
+int n, m, one = 1;
int Timeouts, SumRTT, CountRTT, MinRTT, PktsRetrans, FastRetran, DataPktsOut;
int AckPktsOut, CurrentMSS, DupAcksIn, AckPktsIn, MaxRwinRcvd, Sndbuf;
int CurrentCwnd, SndLimTimeRwin, SndLimTimeCwnd, SndLimTimeSender, DataBytesOut;
@@ -55,14 +56,15 @@
int CongestionOverCount, CongAvoid, SlowStart, MaxRTT, OtherReductions;
int CurTimeouts, AbruptTimeouts, SendStall, SubsequentTimeouts;
int autotune, ThruBytesAcked;
-int link=0, mismatch=0, bad_cable=0, half_duplex=0, congestion=0, totaltime;
+int link = 0, mismatch = 0, bad_cable = 0, half_duplex = 0, congestion = 0,
+ totaltime;
int i, spd, ret;
double order, idle, cpu_idle1, cpu_idle2;
char *name, ip_addr[64], ip_addr2[64];
FILE *fp;
int indx, links[4][16], max, total;
float runave[4];
-int c2sdata, c2sack, s2cdata, s2cack;
+int c2s_linkspeed_data, c2s_linkspeed_ack, s2c_linkspeed_data, s2c_linkspeed_ack;
int j;
char spds[4][256], buff2[32];
char *str, tmpstr[32];
@@ -70,806 +72,869 @@
int s2c2spd, c2sspd, s2cspd, iponly;
int linkcnt, mismatch2, mismatch3;

-static struct option long_options[] = {
- {"debug", 0, 0, 'd'},
- {"nodns", 0, 0, 'n'},
- {"help", 0, 0, 'h'},
- {"log", 1, 0, 'l'},
- {"version", 0, 0, 'v'},
- {0, 0, 0, 0}
-};
-
-int
-err_sys(char* s)
-{
- perror(s);
- exit(1);
+static struct option long_options[] = { { "debug", 0, 0, 'd' }, { "nodns", 0, 0,
+ 'n' }, { "help", 0, 0, 'h' }, { "log", 1, 0, 'l' }, {
"version", 0, 0,
+ 'v' }, { 0, 0, 0, 0 } };
+
+int err_sys(char* s) {
+ perror(s);
+ exit(1);
}

-void calculate()
-{
- int tail[4], i, head[4], tmpret;
- float k;
- float recvbwd, cwndbwd, sendbwd;
- char btlneck[64];
- int congestion2=0;
- I2Addr addr;
- double acks, aspeed, pureacks;
- float cong, retrn, increase, touts, fr_ratio = 0;
- float retransec;
-
- tail[0] = tail[1] = tail[2] = tail[3] = 0;
- head[0] = head[1] = head[2] = head[3] = 0;
- for (i=0; i<4; i++) {
- max = 0;
- indx = 0;
- total = 0;
- for (j=0; j<linkcnt-1; j++) {
- total += links[i][j];
- if (max < links[i][j]) {
- max = links[i][j];
- indx = j;
- }
- }
- for (j=indx+1; j<10; j++) {
- k = (float) links[i][j] / max;
- if (k > .1)
- tail[i]++;
- }
- for (j=0; j<indx; j++) {
- k = (float) links[i][j] / max;
- if (k > .1)
- head[i]++;
- }
- if (links[i][indx] == -1)
- indx = -1;
- if ((total < 20) && (indx != -1))
- indx = -2;
- switch (i) {
- case 0: c2sdata = indx;
- log_print(1, "Client --> Server data detects link = ");
- break;
- case 1: c2sack = indx;
- log_print(1, "Client <-- Server Ack's detect link = ");
- break;
- case 2: s2cdata = indx;
- log_print(1, "Server --> Client data detects link = ");
- break;
- case 3: s2cack = indx;
- log_print(1, "Server <-- Client Ack's detect link = ");
- }
- switch (indx) {
- case -2: log_println(1, "Insufficent Data"); break;
- case -1: log_println(1, "System Fault"); break;
- case 0: log_println(1, "RTT"); break;
- case 1: log_println(1, "Dial-up"); break;
- case 2: log_println(1, "T1"); break;
- case 3: log_println(1, "Ethernet"); break;
- case 4: log_println(1, "T3"); break;
- case 5: log_println(1, "FastEthernet"); break;
- case 6: log_println(1, "OC-12"); break;
- case 7: log_println(1, "Gigabit Ethernet"); break;
- case 8: log_println(1, "OC-48"); break;
- case 9: log_println(1, "10 Gigabit Enet"); break;
- case 10: log_println(1, "Retransmissions"); break;
- }
- }
- switch (c2sdata) {
- case -2: sprintf(btlneck, "Insufficent Data");
- break;
- case -1: sprintf(btlneck, "a System Fault");
- break;
- case 0: sprintf(btlneck, "the Round Trip Time");
- break;
- case 1: sprintf(btlneck, "a 'Dial-up modem' connection");
- break;
- case 2:
- if ((c2sspd/s2cspd > .8) && (c2sspd/s2cspd < 1.2) && (c2sspd
1000))
- sprintf(btlneck, "a 'T1' subnet");
- else {
- if ((tail[3] > 1) || (s2cack == 3))
- sprintf(btlneck, "a 'Cable Modem' connection");
- else
- sprintf(btlneck, "a 'DSL' connection");
- }
- break;
- case 3: if (linkcnt == 16)
- sprintf(btlneck, "a T1 + subnet");
- else
- sprintf(btlneck, "an 'Ethernet' subnet");
- break;
- case 4: if (linkcnt == 16)
- sprintf(btlneck, "a IEEE 802.11b Wifi subnet");
- else
- sprintf(btlneck, "a 'T3/DS-3' subnet");
- break;
- case 5: if (linkcnt == 16)
- sprintf(btlneck, "a Wifi + subnet");
- else
- sprintf(btlneck, "a 'FastEthernet' subnet");
- break;
- case 6: if (linkcnt == 16)
- sprintf(btlneck, "a Ethernet subnet");
- else
- sprintf(btlneck, "an 'OC-12' subnet");
- break;
- case 7: if (linkcnt == 16)
- sprintf(btlneck, "a T3/DS3 subnet");
- else
- sprintf(btlneck, "a 'Gigabit Ethernet' subnet");
- break;
- case 8: if (linkcnt == 16)
- sprintf(btlneck, "a FastEthernet subnet");
- else
- sprintf(btlneck, "an 'OC-48' subnet");
- break;
- case 9: if (linkcnt == 16)
- sprintf(btlneck, "a OC-12 subnet");
- else
- sprintf(btlneck, "a '10 Gigabit Enet' subnet");
- break;
- case 10: if (linkcnt == 16)
- sprintf(btlneck, "a Gigabit Ethernet subnet");
- else
- sprintf(btlneck, "Retransmissions");
- case 11:
- sprintf(btlneck, "an 'OC-48' subnet");
- break;
- case 12:
- sprintf(btlneck, "a '10 Gigabit Enet' subnet");
- break;
- case 13:
- sprintf(btlneck, "Retransmissions");
- break;
- }
- /* Calculate some values */
- avgrtt = (double) SumRTT/CountRTT;
- rttsec = avgrtt * .001;
- loss = (double)(PktsRetrans- FastRetran)/(double)(DataPktsOut-AckPktsOut);
- loss2 = (double)CongestionSignals/PktsOut;
- if (loss == 0)
- loss = .0000000001; /* set to 10^-6 for now */
- if (loss2 == 0)
- loss2 = .0000000001; /* set to 10^-6 for now */
-
- order = (double)DupAcksIn/AckPktsIn;
- bw = (CurrentMSS / (rttsec * sqrt(loss))) * 8 / 1024 / 1024;
- bw2 = (CurrentMSS / (rttsec * sqrt(loss2))) * 8 / 1024 / 1024;
- totaltime = SndLimTimeRwin + SndLimTimeCwnd + SndLimTimeSender;
- rwintime = (double)SndLimTimeRwin/totaltime;
- cwndtime = (double)SndLimTimeCwnd/totaltime;
- sendtime = (double)SndLimTimeSender/totaltime;
- timesec = totaltime/1000000;
- idle = (Timeouts * ((double)CurrentRTO/1000))/timesec;
- retrn = (float)PktsRetrans / PktsOut;
- increase = (float)CongAvoid / PktsOut;
-
- recvbwd = ((MaxRwinRcvd*8)/avgrtt)/1000;
- cwndbwd = ((CurrentCwnd*8)/avgrtt)/1000;
- sendbwd = ((Sndbuf*8)/avgrtt)/1000;
-
- spd = ((double)DataBytesOut / (double)totaltime) * 8;
-
- mismatch2 = 0;
- mismatch3 = 0;
- mmorder = (float)(DataPktsOut - PktsRetrans - FastRetran) / DataPktsOut;
- cong = (float)(CongestionSignals - CongestionOverCount) / PktsOut;
- touts = (float)Timeouts / PktsOut;
- if (PktsRetrans > 0)
- fr_ratio = (float)FastRetran / PktsRetrans;
- retransec = (float)PktsRetrans / timesec;
-
- /* new test based on analysis of TCP behavior in duplex mismatch condition. */
-
- acks = (double) AckPktsIn / (double) DataPktsOut;
- pureacks = (double) (AckPktsIn - DupAcksIn) / (double) DataPktsOut;
- if (s2cspd < c2sspd)
- aspeed = (double)c2sspd / (double)s2cspd;
- else
- aspeed = (double)s2cspd / (double)c2sspd;
- printf("Acks = %0.4f, async speed = %0.4f, mismatch3 = %0.4f, CongOver = %d\n", acks, aspeed, cong, CongestionOverCount);
- printf("idle = %0.4f, timeout/pkts = %0.4f, %%retranmissions = %0.2f, %%increase = %0.2f\n", idle,
- touts, retrn*100, increase*100);
- printf("FastRetrans/Total = %0.4f, Fast/Retrans = %0.4f, Retrans/sec = %0.4f\n", retrn, fr_ratio, retransec);
- if (((acks > 0.7) || (acks < 0.3)) && (retrn > 0.03) && (CongAvoid > SlowStart)) {
- if ((2*CurrentMSS) == MaxSsthresh) {
- mismatch2 = 1;
- mismatch3 = 0;
- } else if (aspeed > 15){
- mismatch2 = 2;
- }
- }
- if ((idle > 0.65) && (touts < 0.4)) {
- if (MaxSsthresh == (2*CurrentMSS)) {
- mismatch2 = 0;
- mismatch3 = 1;
- } else {
- mismatch3 = 2;
- }
- }
-
- /* estimate is less than throughput, something is wrong */
- if (bw < spd)
- link = 0;
-
- if (((loss*100)/timesec > 15) && (cwndtime/timesec > .6) &&
- (loss < .01) && (MaxSsthresh > 0))
- bad_cable = 1;
-
- /* test for Ethernet link (assume Fast E.) */
- if ((spd < 9.5) && (spd > 3.0) && (loss < .01) && (order < .035) && (link > 0))
- link = 10;
-
- /* test for DSL/Cable modem link */
- if ((SndLimTimeSender < 15000) && (spd < 2) && (spd < bw) && (link > 0))
- link = 2;
-
- if (((rwintime > .95) && (SndLimTransRwin/timesec > 30) &&
- (SndLimTransSender/timesec > 30)) || (link <= 10))
- half_duplex = 1;
-
- if ((cwndtime > .02) && (mismatch2 == 0) && (cwndbwd < recvbwd))
- congestion2 = 1;
-
- if (iponly == 0) {
- char tmpbuff[200];
- socklen_t tmpBufLen = 199;
- if ((addr = I2AddrByNode(get_errhandle(), ip_addr)) == NULL) {
- printf("Throughput to host [%s] is limited by %s\n", ip_addr, btlneck);
- }
- else {
- struct addrinfo *fai;
- fai = I2AddrAddrInfo(addr, ip_addr, NULL);
- if (fai == NULL) {
- printf("Throughput to host [%s] is limited by %s\n", ip_addr, btlneck);
- }
- else {
- memset(tmpbuff, 0, 200);
- if ((tmpret = getnameinfo(fai->ai_addr, fai->ai_addrlen, tmpbuff, tmpBufLen, NULL, 0, 0))) {
- log_println(1, "getnameinfo: %d", tmpret);
- printf("Throughput to host [%s] is limited by %s\n", ip_addr, btlneck);
- }
- else {
- printf("Throughput to host %s [%s] is limited by %s\n", tmpbuff, ip_addr, btlneck);
- }
- }
- }
- }
- else {
- printf("Throughput to host [%s] is limited by %s\n", ip_addr, btlneck);
- }
-
- printf("\tWeb100 says link = %d, speed-chk says link = %d\n", link, c2sdata);
- printf("\tSpeed-chk says {%d, %d, %d, %d}, Running average = {%0.1f, %0.1f, %0.1f, %0.1f}\n",
- c2sdata, c2sack, s2cdata, s2cack, runave[0], runave[1], runave[2], runave[3]);
- if (c2sspd > 1000)
- printf("\tC2Sspeed = %0.2f Mbps, S2Cspeed = %0.2f Mbps, CWND-Limited = %0.2f Mbps, ",
- (float) c2sspd/1000, (float)s2cspd/1000, (float)s2c2spd/1000);
- else
- printf("\tC2Sspeed = %d kbps, S2Cspeed = %d kbps, CWND-Limited: %d kbps, ", c2sspd, s2cspd, s2c2spd);
- if (bw > 1)
- printf("Estimate = %0.2f Mbps (%0.2f Mbps)\n", bw, bw2);
- else
- printf("Estimate = %0.2f kbps (%0.2f kbps)\n", bw*1000, bw2*1000);
-
- if ((bw*1000) > s2cspd)
- printf("\tOld estimate is greater than measured; ");
- else
- printf("\tOld estimate is less than measured; ");
-
- if (CongestionSignals == -1)
- printf("No data collected to calculage new estimate\n");
- else {
- if ((bw2*1000) > s2cspd)
- printf("New estimate is greater than measured\n");
- else
- printf("New estimate is less than measured\n");
- }
-
- printf("\tLoss = %0.2f%% (%0.2f%%), Out-of-Order = %0.2f%%, Long tail = {%d, %d, %d, %d}\n",
- loss*100, loss2*100, order*100, tail[0], tail[1], tail[2], tail[3]);
- printf("\tDistribution = {%d, %d, %d, %d}, time spent {r=%0.1f%% c=%0.1f%% s=%0.1f%%}\n",
- head[0], head[1], head[2], head[3], rwintime*100, cwndtime*100, sendtime*100);
- printf("\tAve(min) RTT = %0.2f (%d) msec, Buffers = {r=%d, c=%d, s=%d}\n",
- avgrtt, MinRTT, MaxRwinRcvd, CurrentCwnd, Sndbuf/2);
- printf("\tbw*delay = {r=%0.2f, c=%0.2f, s=%0.2f}, Transitions/sec = {r=%0.1f, c=%0.1f, s=%0.1f}\n",
- recvbwd, cwndbwd, sendbwd,
- SndLimTransRwin/timesec, SndLimTransCwnd/timesec, SndLimTransSender/timesec);
- printf("\tRetransmissions/sec = %0.1f, Timeouts/sec = %0.1f, SSThreshold = %d\n",
- (float) PktsRetrans/timesec, (float) Timeouts/timesec, MaxSsthresh);
- printf("\tMismatch = %d (%d:%d[%0.2f])", mismatch, mismatch2, mismatch3, mmorder);
- if (mismatch3 == 1)
- printf(" [H=F, S=H]");
- if (mismatch2 == 1)
- printf(" [H=H, S=F]");
- printf(", Cable fault = %d, Congestion = %d, Duplex = %d\n\n",
- bad_cable, congestion2, half_duplex);
+void calculate() {
+ int tail[4], i, head[4], tmpret;
+ float k;
+ float recvbwd, cwndbwd, sendbwd;
+ char btlneck[64];
+ int congestion2 = 0;
+ I2Addr addr;
+ double acks, aspeed, pureacks;
+ float cong, retrn, increase, touts, fr_ratio = 0;
+ float retransec;
+
+ tail[0] = tail[1] = tail[2] = tail[3] = 0;
+ head[0] = head[1] = head[2] = head[3] = 0;
+ for (i = 0; i < 4; i++) {
+ max = 0;
+ indx = 0;
+ total = 0;
+ for (j = 0; j < linkcnt - 1; j++) {
+ total += links[i][j];
+ if (max < links[i][j]) {
+ max = links[i][j];
+ indx = j;
+ }
+ }
+ for (j = indx + 1; j < 10; j++) {
+ k = (float) links[i][j] / max;
+ if (k > .1)
+ tail[i]++;
+ }
+ for (j = 0; j < indx; j++) {
+ k = (float) links[i][j] / max;
+ if (k > .1)
+ head[i]++;
+ }
+ if (links[i][indx] == -1)
+ indx = -1;
+ if ((total < 20) && (indx != -1))
+ indx = -2;
+ switch (i) {
+ case 0:
+ c2s_linkspeed_data = indx;
+ log_print(1, "Client --> Server data detects link =
");
+ break;
+ case 1:
+ c2s_linkspeed_ack = indx;
+ log_print(1, "Client <-- Server Ack's detect link =
");
+ break;
+ case 2:
+ s2c_linkspeed_data = indx;
+ log_print(1, "Server --> Client data detects link =
");
+ break;
+ case 3:
+ s2c_linkspeed_ack = indx;
+ log_print(1, "Server <-- Client Ack's detect link =
");
+ }
+
+ /*
+ switch (indx) {
+ case -2:
+ log_println(1, "Insufficent Data");
+ break;
+ case -1:
+ log_println(1, "System Fault");
+ break;
+ case 0:
+ log_println(1, "RTT");
+ break;
+ case 1:
+ log_println(1, "Dial-up");
+ break;
+ case 2:
+ log_println(1, "T1");
+ break;
+ case 3:
+ log_println(1, "Ethernet");
+ break;
+ case 4:
+ log_println(1, "T3");
+ break;
+ case 5:
+ log_println(1, "FastEthernet");
+ break;
+ case 6:
+ log_println(1, "OC-12");
+ break;
+ case 7:
+ log_println(1, "Gigabit Ethernet");
+ break;
+ case 8:
+ log_println(1, "OC-48");
+ break;
+ case 9:
+ log_println(1, "10 Gigabit Enet");
+ break;
+ case 10:
+ log_println(1, "Retransmissions");
+ break;
+ }
+ */
+ log_linkspeed(indx);
+ }
+ switch (c2s_linkspeed_data) {
+ case -2:
+ sprintf(btlneck, "Insufficent Data");
+ break;
+ case -1:
+ sprintf(btlneck, "a System Fault");
+ break;
+ case 0:
+ sprintf(btlneck, "the Round Trip Time");
+ break;
+ case 1:
+ sprintf(btlneck, "a 'Dial-up modem' connection");
+ break;
+ case 2:
+ if ((c2sspd / s2cspd > .8) && (c2sspd / s2cspd < 1.2)
+ && (c2sspd > 1000))
+ sprintf(btlneck, "a 'T1' subnet");
+ else {
+ if ((tail[3] > 1) || (s2c_linkspeed_ack == 3))
+ sprintf(btlneck, "a 'Cable Modem'
connection");
+ else
+ sprintf(btlneck, "a 'DSL' connection");
+ }
+ break;
+ case 3:
+ if (linkcnt == 16)
+ sprintf(btlneck, "a T1 + subnet");
+ else
+ sprintf(btlneck, "an 'Ethernet' subnet");
+ break;
+ case 4:
+ if (linkcnt == 16)
+ sprintf(btlneck, "a IEEE 802.11b Wifi subnet");
+ else
+ sprintf(btlneck, "a 'T3/DS-3' subnet");
+ break;
+ case 5:
+ if (linkcnt == 16)
+ sprintf(btlneck, "a Wifi + subnet");
+ else
+ sprintf(btlneck, "a 'FastEthernet' subnet");
+ break;
+ case 6:
+ if (linkcnt == 16)
+ sprintf(btlneck, "a Ethernet subnet");
+ else
+ sprintf(btlneck, "an 'OC-12' subnet");
+ break;
+ case 7:
+ if (linkcnt == 16)
+ sprintf(btlneck, "a T3/DS3 subnet");
+ else
+ sprintf(btlneck, "a 'Gigabit Ethernet' subnet");
+ break;
+ case 8:
+ if (linkcnt == 16)
+ sprintf(btlneck, "a FastEthernet subnet");
+ else
+ sprintf(btlneck, "an 'OC-48' subnet");
+ break;
+ case 9:
+ if (linkcnt == 16)
+ sprintf(btlneck, "a OC-12 subnet");
+ else
+ sprintf(btlneck, "a '10 Gigabit Enet' subnet");
+ break;
+ case 10:
+ if (linkcnt == 16)
+ sprintf(btlneck, "a Gigabit Ethernet subnet");
+ else
+ sprintf(btlneck, "Retransmissions");
+ case 11:
+ sprintf(btlneck, "an 'OC-48' subnet");
+ break;
+ case 12:
+ sprintf(btlneck, "a '10 Gigabit Enet' subnet");
+ break;
+ case 13:
+ sprintf(btlneck, "Retransmissions");
+ break;
+ }
+ /* Calculate some values */
+ avgrtt = (double) SumRTT / CountRTT;
+ rttsec = avgrtt * .001;
+ loss = (double) (PktsRetrans - FastRetran)
+ / (double) (DataPktsOut - AckPktsOut);
+ loss2 = (double) CongestionSignals / PktsOut;
+ if (loss == 0)
+ loss = .0000000001; /* set to 10^-6 for now */
+ if (loss2 == 0)
+ loss2 = .0000000001; /* set to 10^-6 for now */
+
+ order = (double) DupAcksIn / AckPktsIn;
+ bw = (CurrentMSS / (rttsec * sqrt(loss))) * 8 / 1024 / 1024;
+ bw2 = (CurrentMSS / (rttsec * sqrt(loss2))) * 8 / 1024 / 1024;
+ totaltime = SndLimTimeRwin + SndLimTimeCwnd + SndLimTimeSender;
+ rwintime = (double) SndLimTimeRwin / totaltime;
+ cwndtime = (double) SndLimTimeCwnd / totaltime;
+ sendtime = (double) SndLimTimeSender / totaltime;
+ timesec = totaltime / 1000000;
+ idle = (Timeouts * ((double) CurrentRTO / 1000)) / timesec;
+ retrn = (float) PktsRetrans / PktsOut;
+ increase = (float) CongAvoid / PktsOut;
+
+ recvbwd = ((MaxRwinRcvd * 8) / avgrtt) / 1000;
+ cwndbwd = ((CurrentCwnd * 8) / avgrtt) / 1000;
+ sendbwd = ((Sndbuf * 8) / avgrtt) / 1000;
+
+ spd = ((double) DataBytesOut / (double) totaltime) * 8;
+
+ mismatch2 = 0;
+ mismatch3 = 0;
+ mmorder = (float) (DataPktsOut - PktsRetrans - FastRetran) /
DataPktsOut;
+ cong = (float) (CongestionSignals - CongestionOverCount) / PktsOut;
+ touts = (float) Timeouts / PktsOut;
+ if (PktsRetrans > 0)
+ fr_ratio = (float) FastRetran / PktsRetrans;
+ retransec = (float) PktsRetrans / timesec;
+
+ /* new test based on analysis of TCP behavior in duplex mismatch condition. */
+
+ acks = (double) AckPktsIn / (double) DataPktsOut;
+ pureacks = (double) (AckPktsIn - DupAcksIn) / (double) DataPktsOut;
+ if (s2cspd < c2sspd)
+ aspeed = (double) c2sspd / (double) s2cspd;
+ else
+ aspeed = (double) s2cspd / (double) c2sspd;
+ printf(
+ "Acks = %0.4f, async speed = %0.4f, mismatch3 = %0.4f, CongOver = %d\n",
+ acks, aspeed, cong, CongestionOverCount);
+ printf(
+ "idle = %0.4f, timeout/pkts = %0.4f, %%retranmissions = %0.2f, %%increase = %0.2f\n",
+ idle, touts, retrn * 100, increase * 100);
+ printf(
+ "FastRetrans/Total = %0.4f, Fast/Retrans = %0.4f, Retrans/sec = %0.4f\n",
+ retrn, fr_ratio, retransec);
+ if (((acks > 0.7) || (acks < 0.3)) && (retrn > 0.03)
+ && (CongAvoid > SlowStart)) {
+ if ((2 * CurrentMSS) == MaxSsthresh) {
+ mismatch2 = 1;
+ mismatch3 = 0;
+ } else if (aspeed > 15) {
+ mismatch2 = 2;
+ }
+ }
+ if ((idle > 0.65) && (touts < 0.4)) {
+ if (MaxSsthresh == (2 * CurrentMSS)) {
+ mismatch2 = 0;
+ mismatch3 = 1;
+ } else {
+ mismatch3 = 2;
+ }
+ }
+
+ /* estimate is less than throughput, something is wrong */
+ if (bw < spd)
+ link = 0;
+
+ if (((loss * 100) / timesec > 15) && (cwndtime / timesec > .6)
+ && (loss < .01) && (MaxSsthresh > 0))
+ bad_cable = 1;
+
+ /* test for Ethernet link (assume Fast E.) */
+ if ((spd < 9.5) && (spd > 3.0) && (loss < .01) && (order < .035)
+ && (link > 0))
+ link = 10;
+
+ /* test for DSL/Cable modem link */
+ if ((SndLimTimeSender < 15000) && (spd < 2) && (spd < bw) && (link >
0))
+ link = 2;
+
+ if (((rwintime > .95) && (SndLimTransRwin / timesec > 30)
+ && (SndLimTransSender / timesec > 30)) || (link <=
10))
+ half_duplex = 1;
+
+ if ((cwndtime > .02) && (mismatch2 == 0) && (cwndbwd < recvbwd))
+ congestion2 = 1;
+
+ if (iponly == 0) {
+ char tmpbuff[200];
+ socklen_t tmpBufLen = 199;
+ if ((addr = I2AddrByNode(get_errhandle(), ip_addr)) == NULL) {
+ printf("Throughput to host [%s] is limited by %s\n",
ip_addr,
+ btlneck);
+ } else {
+ struct addrinfo *fai;
+ fai = I2AddrAddrInfo(addr, ip_addr, NULL);
+ if (fai == NULL) {
+ printf("Throughput to host [%s] is limited by
%s\n", ip_addr,
+ btlneck);
+ } else {
+ memset(tmpbuff, 0, 200);
+ if ((tmpret = getnameinfo(fai->ai_addr,
fai->ai_addrlen,
+ tmpbuff, tmpBufLen, NULL, 0,
0))) {
+ log_println(1, "getnameinfo: %d",
tmpret);
+ printf("Throughput to host [%s] is limited
by %s\n",
+ ip_addr, btlneck);
+ } else {
+ printf("Throughput to host %s [%s] is
limited by %s\n",
+ tmpbuff, ip_addr,
btlneck);
+ }
+ }
+ }
+ } else {
+ printf("Throughput to host [%s] is limited by %s\n", ip_addr,
btlneck);
+ }
+
+ printf("\tWeb100 says link = %d, speed-chk says link = %d\n", link,
+ c2s_linkspeed_data);
+ printf(
+ "\tSpeed-chk says {%d, %d, %d, %d}, Running average = {%0.1f, %0.1f, %0.1f, %0.1f}\n",
+ c2s_linkspeed_data, c2s_linkspeed_ack, s2c_linkspeed_data, s2c_linkspeed_ack, runave[0], runave[1], runave[2],
+ runave[3]);
+ if (c2sspd > 1000)
+ printf(
+ "\tC2Sspeed = %0.2f Mbps, S2Cspeed = %0.2f Mbps, CWND-Limited = %0.2f Mbps, ",
+ (float) c2sspd / 1000, (float) s2cspd / 1000,
+ (float) s2c2spd / 1000);
+ else
+ printf(
+ "\tC2Sspeed = %d kbps, S2Cspeed = %d kbps,
CWND-Limited: %d kbps, ",
+ c2sspd, s2cspd, s2c2spd);
+ if (bw > 1)
+ printf("Estimate = %0.2f Mbps (%0.2f Mbps)\n", bw, bw2);
+ else
+ printf("Estimate = %0.2f kbps (%0.2f kbps)\n", bw * 1000, bw2
* 1000);
+
+ if ((bw * 1000) > s2cspd)
+ printf("\tOld estimate is greater than measured; ");
+ else
+ printf("\tOld estimate is less than measured; ");
+
+ if (CongestionSignals == -1)
+ printf("No data collected to calculage new estimate\n");
+ else {
+ if ((bw2 * 1000) > s2cspd)
+ printf("New estimate is greater than measured\n");
+ else
+ printf("New estimate is less than measured\n");
+ }
+
+ printf(
+ "\tLoss = %0.2f%% (%0.2f%%), Out-of-Order = %0.2f%%, Long tail = {%d, %d, %d, %d}\n",
+ loss * 100, loss2 * 100, order * 100, tail[0],
tail[1], tail[2],
+ tail[3]);
+ printf(
+ "\tDistribution = {%d, %d, %d, %d}, time spent {r=%0.1f%% c=%0.1f%% s=%0.1f%%}\n",
+ head[0], head[1], head[2], head[3], rwintime * 100,
cwndtime * 100,
+ sendtime * 100);
+ printf("\tAve(min) RTT = %0.2f (%d) msec, Buffers = {r=%d, c=%d,
s=%d}\n",
+ avgrtt, MinRTT, MaxRwinRcvd, CurrentCwnd, Sndbuf / 2);
+ printf(
+ "\tbw*delay = {r=%0.2f, c=%0.2f, s=%0.2f}, Transitions/sec = {r=%0.1f, c=%0.1f, s=%0.1f}\n",
+ recvbwd, cwndbwd, sendbwd, SndLimTransRwin / timesec,
+ SndLimTransCwnd / timesec, SndLimTransSender /
timesec);
+ printf(
+ "\tRetransmissions/sec = %0.1f, Timeouts/sec = %0.1f, SSThreshold = %d\n",
+ (float) PktsRetrans / timesec, (float) Timeouts /
timesec,
+ MaxSsthresh);
+ printf("\tMismatch = %d (%d:%d[%0.2f])", mismatch, mismatch2,
mismatch3,
+ mmorder);
+ if (mismatch3 == 1)
+ printf(" [H=F, S=H]");
+ if (mismatch2 == 1)
+ printf(" [H=H, S=F]");
+ printf(", Cable fault = %d, Congestion = %d, Duplex = %d\n\n",
bad_cable,
+ congestion2, half_duplex);
}

-int
-main(int argc, char** argv)
-{
- int c;
- char tmpstr[256];
- int debug = 0;
-
- iponly = 0;
- while ((c = getopt_long(argc, argv, "dnhl:v", long_options, 0)) != -1) {
- switch (c) {
- case 'h':
- analyze_long_usage("ANL/Internet2 NDT version " VERSION " (analyze)");
- break;
- case 'v':
- printf("ANL/Internet2 NDT version %s (analyze)\n", VERSION);
- exit(0);
- break;
- case 'l':
- LogFileName = optarg;
- break;
- case 'n':
- iponly=1;
- break;
- case 'd':
- debug++;
- break;
- case '?':
- short_usage(argv[0], "");
- break;
- }
- }
-
- if (optind < argc) {
- short_usage(argv[0], "Unrecognized non-option elements");
- }
-
- log_init(argv[0], debug);
-
- if (LogFileName == NULL) {
- sprintf(tmpstr, "%s/%s", BASEDIR, LOGFILE);
- LogFileName = tmpstr;
- }
- log_println(1, "log file = %s", LogFileName);
-
- if ((fp = fopen(LogFileName, "r")) == NULL)
- err_sys("Missing Log file ");
-
- n = 0;
- m = 0;
- while ((fgets(buff, 512, fp)) != NULL) {
- if (strncmp(buff, "spds", 4) == 0) {
- str = strchr(buff, 0x27);
- str++;
- linkcnt = sscanf(str, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %f",
- &links[n][0], &links[n][1], &links[n][2], &links[n][3], &links[n][4],
- &links[n][5], &links[n][6], &links[n][7], &links[n][8],
- &links[n][9], &links[n][10], &links[n][11], &links[n][12],
- &links[n][13], &links[n][14], &runave[n]);
- if (linkcnt != 16)
- linkcnt = sscanf(str, "%d %d %d %d %d %d %d %d %d %d %d %d %f",
- &links[n][0], &links[n][1], &links[n][2], &links[n][3], &links[n][4],
- &links[n][5], &links[n][6], &links[n][7], &links[n][8],
- &links[n][9], &links[n][10], &links[n][11], &runave[n]);
- n++;
- continue;
- }
- if (strncmp(buff, "Running", 6) == 0) {
- ret = sscanf(buff, "%*s %*s %*s %f %*s", &run_ave[m]);
- log_println(1, "read %d tokens from buffer", ret);
- log_println(1, "running average[%d] = %0.2f", m, run_ave[m]);
- if (runave[m] == 0)
- runave[m] = run_ave[m];
- m++;
- continue;
- }
- if ((str = strchr(buff, 'p')) != NULL) {
- if ((strncmp(buff, "Apr", 3) == 0) || (strncmp(buff, "Sep", 3) == 0)) {
-skip2:
- str++;
- str = strchr(str, 'p');
- if (str == NULL)
- goto skip1;
- }
- if (strncmp(str, "port", 4) != 0)
- goto skip2;
- sscanf(buff, "%*s %*s %*s %s %*s", (char*) &ip_addr);
- log_println(1, "Start of New Packet trace -- %s", buff);
- n = 0;
- m = 0;
- run_ave[0] = 0;
- run_ave[1] = 0;
- run_ave[2] = 0;
- run_ave[3] = 0;
- runave[0] = 0;
- runave[1] = 0;
- runave[2] = 0;
- runave[3] = 0;
- }
-skip1:
- if ((str = strchr(buff, ',')) != NULL) {
- str++;
- sscanf(str, "%[^,]s", ip_addr2);
- if ((str = strchr(str, ',')) == NULL)
- continue;
- str++;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- s2c2spd = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- s2cspd = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- c2sspd = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- Timeouts = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- SumRTT = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- CountRTT = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- PktsRetrans = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- FastRetran = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- DataPktsOut = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- AckPktsOut = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- CurrentMSS = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- DupAcksIn = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- AckPktsIn = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- MaxRwinRcvd = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- Sndbuf = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- CurrentCwnd = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- SndLimTimeRwin = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- SndLimTimeCwnd = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- SndLimTimeSender = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- DataBytesOut = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- SndLimTransRwin = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- SndLimTransCwnd = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- SndLimTransSender = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- MaxSsthresh = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- CurrentRTO = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- CurrentRwinRcvd = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- link = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- mismatch = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- bad_cable = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- half_duplex = atoi(tmpstr);
-
- str = strchr(str, ',') +1;
- if (sscanf(str, "%[^,]s", tmpstr) < 1)
- goto display;
- congestion = atoi(tmpstr);
-
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/src/clt_tests.h Fri Aug 25 02:20:49 2006
+++ /trunk/src/clt_tests.h Mon Apr 30 13:46:39 2012
@@ -9,8 +9,15 @@
#ifndef _JS_CLT_TESTS_H
#define _JS_CLT_TESTS_H

-int test_mid_clt(int ctlSocket, char tests, char* host, int conn_options, int buf_size, char* tmpstr2);
-int test_c2s_clt(int ctlSocket, char tests, char* host, int conn_options, int buf_size);
-int test_s2c_clt(int ctlSocket, char tests, char* host, int conn_options, int buf_size, char* tmpstr);
+#define MIDBOX_TEST_LOG "Middlebox test"
+#define S2C_TEST_LOG "S2C throughput test"
+#define MIDBOX_TEST_RES_SIZE 512
+
+int test_mid_clt(int ctlSocket, char tests, char* host, int conn_options,
+ int buf_size, char* tmpstr2);
+int test_c2s_clt(int ctlSocket, char tests, char* host, int conn_options,
+ int buf_size);
+int test_s2c_clt(int ctlSocket, char tests, char* host, int conn_options,
+ int buf_size, char* tmpstr);

#endif
=======================================
--- /trunk/src/fakewww.c Sun Mar 21 11:04:42 2010
+++ /trunk/src/fakewww.c Mon Apr 30 13:46:39 2012
@@ -47,34 +47,38 @@
char* er_time_format = ER_TIME_FORMAT;
char buff[BUFFSIZE];
/* html message */
-char *MsgOK = "HTTP/1.0 200 OK\r\n\r\n";
+char *MsgOK = "HTTP/1.0 200 OK\r\n\r\n";
char *MsgNope1 = "HTTP/1.0 404 Not found\r\n\r\n";
char *MsgNope2 = "<HEAD><TITLE>File Not Found</TITLE></HEAD>\n"
- "<BODY><H1>The requested file could not be found</H1></BODY>\n";
+ "<BODY><H1>The requested file could not be
found</H1></BODY>\n";

char *MsgRedir1 = "HTTP/1.0 307 Temporary Redirect\r\n";
char *MsgRedir2 = "Location: ";
char *MsgRedir3 = "\r\n\r\n";
char *MsgRedir4 = "<HTML><TITLE>FLM server Redirect Page</TITLE>\n"
- " <BODY>\n <meta http-equiv=\"refresh\" content=\"2; ";
-char *MsgRedir5 = "\">\n\n<h2>FLM server re-direction page</h2>\n"
- "<p><font size=\"+2\">Your client is being redirected to the 'closest' FLM server "
- "for configuration testing.\n <a ";
+ " <BODY>\n <meta http-equiv=\"refresh\" content=\"2; ";
+char *MsgRedir5 =
+ "\">\n\n<h2>FLM server re-direction page</h2>\n"
+ "<p><font size=\"+2\">Your client is being redirected to the 'closest' FLM server "
+ "for configuration testing.\n <a ";
char *MsgRedir6 = ">Click Here </a> if you are not "
- "automatically redirected in the next 2 seconds.\n "
- "</font></BODY>\n</HTML>";
-
-char *Mypagefile = "/tcpbw100.html"; /* we throw the slash away */
-char *okfile[] = {"/tcpbw100.html", "/Tcpbw100.class", "/Tcpbw100$1.class",
- "/Tcpbw100$clsFrame.class", "/Tcpbw100.jar", "/copyright.html",
"/web100variables.html",
- "/"ADMINFILE, "/Admin.class", "/tr.sh", "/traceroute.pl",
"/Tcpbw100$MyTextPane.class",
- "/Tcpbw100$Protocol.class", "/Tcpbw100$StatusPanel.class",
"/Tcpbw100$3.class",
- "/Tcpbw100$OsfwWorker.class", "/Tcpbw100$Message.class",
"/Tcpbw100$StatusPanel$1.class",
- "/Tcpbw100$clsFrame$1.class", "/Tcpbw100$TestWorker.class", "/crossdomain.xml", 0};
+ "automatically redirected in the next 2 seconds.\n "
+ "</font></BODY>\n</HTML>";
+
+char *Mypagefile = "/tcpbw100.html"; /* we throw the slash away */
+char *okfile[] = { "/tcpbw100.html", "/Tcpbw100.class", "/Tcpbw100$1.class",
+ "/Tcpbw100$clsFrame.class", "/Tcpbw100.jar",
"/copyright.html",
+ "/web100variables.html", "/"ADMINFILE, "/Admin.class",
"/tr.sh",
+ "/traceroute.pl", "/Tcpbw100$MyTextPane.class",
+ "/Tcpbw100$Protocol.class", "/Tcpbw100$StatusPanel.class",
+ "/Tcpbw100$3.class", "/Tcpbw100$OsfwWorker.class",
+ "/Tcpbw100$Message.class", "/Tcpbw100$StatusPanel$1.class",
+ "/Tcpbw100$clsFrame$1.class", "/Tcpbw100$TestWorker.class",
+ "/crossdomain.xml", 0 };

typedef struct allowed {
- char* filename;
- struct allowed *next;
+ char* filename;
+ struct allowed *next;
} Allowed;

Allowed* a_root = NULL;
@@ -87,33 +91,23 @@
static char dt6fn[256];
#endif

-int usesyslog=0;
-char *SysLogFacility=NULL;
+int usesyslog = 0;
+char *SysLogFacility = NULL;
int syslogfacility = LOG_FACILITY;
-char *ProcessName={"fakewww"};
-
-static struct option long_options[] = {
- {"debug", 0, 0, 'd'},
- {"help", 0, 0, 'h'},
- {"alog", 1, 0, 'l'},
- {"elog", 1, 0, 'e'},
- {"port", 1, 0, 'p'},
- {"ttl", 1, 0, 't'},
- {"federated", 0, 0, 'F'},
- {"file", 1, 0, 'f'},
- {"basedir", 1, 0, 'b'},
- {"syslog", 0, 0, 's'},
- {"logfacility", 1, 0, 'S'},
- {"version", 0, 0, 'v'},
- {"dflttree", 1, 0, 301},
+char *ProcessName = { "fakewww" };
+
+static struct option long_options[] = { { "debug", 0, 0, 'd' }, { "help", 0, 0,
+ 'h' }, { "alog", 1, 0, 'l' }, { "elog", 1, 0, 'e' },
+ { "port", 1, 0, 'p' }, { "ttl", 1, 0, 't' }, { "federated",
0, 0, 'F' },
+ { "file", 1, 0, 'f' }, { "basedir", 1, 0, 'b' },
+ { "syslog", 0, 0, 's' }, { "logfacility", 1, 0, 'S' }, {
"version", 0,
+ 0, 'v' }, { "dflttree", 1, 0, 301 },
#ifdef AF_INET6
- {"dflttree6", 1, 0, 302},
- {"ipv4", 0, 0, '4'},
- {"ipv6", 0, 0, '6'},
+ { "dflttree6", 1, 0, 302},
+ { "ipv4", 0, 0, '4'},
+ { "ipv6", 0, 0, '6'},
#endif
- {0, 0, 0, 0}
-};
-
+ { 0, 0, 0, 0 } };

void dowww(int, I2Addr, char*, char*, char*, int, int);
void reap();
@@ -121,210 +115,219 @@
void logErLog(char*, time_t*, char*, char*, ...);
void logAcLog(char*, time_t*, char*, char*, int, int, char*, char*);

-void
-err_sys(char* s)
-{
- perror(s);
- exit(1);
+void err_sys(char* s) {
+ perror(s);
+ exit(1);
}

-int
-main(int argc, char** argv)
-{
- int c;
- int sockfd, newsockfd;
- int federated=0, debug=0, max_ttl=10;
- time_t tt;
- socklen_t clilen;
- char* srcname = NULL;
- char* listenport = PORT;
- int conn_options = 0;
-
- char *ErLogFileName= BASEDIR"/"ERLOGFILE;
- char *AcLogFileName= BASEDIR"/"ACLOGFILE;
- struct sockaddr_storage cli_addr;
- I2Addr listenaddr = NULL;
- Allowed* ptr;
+int main(int argc, char** argv) {
+ int c;
+ int sockfd, newsockfd;
+ int federated = 0, debug = 0, max_ttl = 10;
+ time_t tt;
+ socklen_t clilen;
+ char* srcname = NULL;
+ char* listenport = PORT;
+ int conn_options = 0;
+
+ char *ErLogFileName = BASEDIR
+ "/"ERLOGFILE;
+ char *AcLogFileName = BASEDIR
+ "/"ACLOGFILE;
+ struct sockaddr_storage cli_addr;
+ I2Addr listenaddr = NULL;
+ Allowed* ptr;

#ifdef AF_INET6
#define GETOPT_LONG_INET6(x) "46"x
#else
#define GETOPT_LONG_INET6(x) x
#endif
-
- while ((c = getopt_long(argc, argv,
- GETOPT_LONG_INET6("dhl:e:p:t:Ff:b:sS:v"), long_options, 0)) != -1) {
- switch (c) {
- case '4':
- conn_options |= OPT_IPV4_ONLY;
- break;
- case '6':
- conn_options |= OPT_IPV6_ONLY;
- break;
- case 'd':
- debug++;
- break;
- case 'h':
- www_long_usage("ANL/Internet2 NDT version " VERSION " (fakewww)");
- break;
- case 'v':
- printf("ANL/Internet2 NDT version %s (fakewww)\n", VERSION);
- exit(0);
- break;
- case 'l':
- AcLogFileName = optarg;
- break;
- case 'e':
- ErLogFileName = optarg;
- break;
- case 'p':
- listenport = optarg;
- break;
- case 't':
- max_ttl = atoi(optarg);
- break;
- case 'F':
- federated = 1;
- break;
- case 'f':
- ptr = malloc(sizeof(Allowed));
- ptr->filename = optarg;
- ptr->next = a_root;
- a_root = ptr;
- break;
- case 'b':
- basedir = optarg;
- break;
- case 's':
- usesyslog = 1;
- break;
- case 'S':
- SysLogFacility = optarg;
- break;
- case 301:
- DefaultTree = optarg;
- break;
+
+ while ((c = getopt_long(argc, argv,
+ GETOPT_LONG_INET6("dhl:e:p:t:Ff:b:sS:v"),
long_options, 0)) != -1) {
+ switch (c) {
+ case '4':
+ conn_options |= OPT_IPV4_ONLY;
+ break;
+ case '6':
+ conn_options |= OPT_IPV6_ONLY;
+ break;
+ case 'd':
+ debug++;
+ break;
+ case 'h':
+ www_long_usage("ANL/Internet2 NDT version " VERSION "
(fakewww)");
+ break;
+ case 'v':
+ printf("ANL/Internet2 NDT version %s (fakewww)\n",
VERSION);
+ exit(0);
+ break;
+ case 'l':
+ AcLogFileName = optarg;
+ break;
+ case 'e':
+ ErLogFileName = optarg;
+ break;
+ case 'p':
+ listenport = optarg;
+ break;
+ case 't':
+ max_ttl = atoi(optarg);
+ break;
+ case 'F':
+ federated = 1;
+ break;
+ case 'f':
+ ptr = malloc(sizeof(Allowed));
+ ptr->filename = optarg;
+ ptr->next = a_root;
+ a_root = ptr;
+ break;
+ case 'b':
+ basedir = optarg;
+ break;
+ case 's':
+ usesyslog = 1;
+ break;
+ case 'S':
+ SysLogFacility = optarg;
+ break;
+ case 301:
+ DefaultTree = optarg;
+ break;
#ifdef AF_INET6
- case 302:
- DefaultTree6 = optarg;
- break;
+ case 302:
+ DefaultTree6 = optarg;
+ break;
#endif
- case '?':
- short_usage(argv[0], "");
- break;
- }
- }
-
- if (optind < argc) {
- short_usage(argv[0], "Unrecognized non-option elements");
- }
-
- log_init(argv[0], debug);
-
- if (SysLogFacility != NULL) {
- int i = 0;
- while (facilitynames[i].c_name) {
- if (strcmp(facilitynames[i].c_name, SysLogFacility) == 0) {
- syslogfacility = facilitynames[i].c_val;
- break;
- }
- ++i;
- }
- if (facilitynames[i].c_name == NULL) {
- log_println(0, "Warning: Unknown syslog facility [%s] --> using default (%d)",
- SysLogFacility, syslogfacility);
- SysLogFacility = NULL;
- }
- }
-
- if (DefaultTree == NULL) {
- sprintf(dtfn, "%s/%s", BASEDIR, DFLT_TREE);
- DefaultTree = dtfn;
- }
-
+ case '?':
+ short_usage(argv[0], "");
+ break;
+ }
+ }
+
+ if (optind < argc) {
+ short_usage(argv[0], "Unrecognized non-option elements");
+ }
+
+ log_init(argv[0], debug);
+
+ if (SysLogFacility != NULL) {
+ int i = 0;
+ while (facilitynames[i].c_name) {
+ if (strcmp(facilitynames[i].c_name, SysLogFacility)
== 0) {
+ syslogfacility = facilitynames[i].c_val;
+ break;
+ }
+ ++i;
+ }
+ if (facilitynames[i].c_name == NULL) {
+ log_println(
+ 0,
+ "Warning: Unknown syslog facility [%s] -->
using default (%d)",
+ SysLogFacility, syslogfacility);
+ SysLogFacility = NULL;
+ }
+ }
+
+ if (DefaultTree == NULL) {
+ sprintf(dtfn, "%s/%s", BASEDIR, DFLT_TREE);
+ DefaultTree = dtfn;
+ }
+
#ifdef AF_INET6
- if (DefaultTree6 == NULL) {
- sprintf(dt6fn, "%s/%s", BASEDIR, DFLT_TREE6);
- DefaultTree6 = dt6fn;
- }
+ if (DefaultTree6 == NULL) {
+ sprintf(dt6fn, "%s/%s", BASEDIR, DFLT_TREE6);
+ DefaultTree6 = dt6fn;
+ }
#endif
-
- /*
- * Bind our local address so that the client can send to us.
- */
- if (srcname && !(listenaddr = I2AddrByNode(get_errhandle(), srcname))) {
- err_sys("server: Invalid source address specified");
- }
- if ((listenaddr = CreateListenSocket(listenaddr, listenport, conn_options, 0)) == NULL) {
- err_sys("server: CreateListenSocket failed");
- }
- sockfd = I2AddrFD(listenaddr);
-
- tt = time(0);
- log_println(1, "%15.15s fakewww server started (NDT version %s)", ctime(&tt)+4, VERSION);
- log_println(1, "\tport = %d", I2AddrPort(listenaddr));
- log_println(1, "\tfederated mode = %s", (federated == 1) ? "on" : "off");
- log_println(1, "\taccess log = %s\n\terror log = %s", AcLogFileName, ErLogFileName);
- log_println(1, "\tbasedir = %s", basedir);
- if (usesyslog) {
- log_println(1, "\tsyslog facility = %s (%d)", SysLogFacility ? SysLogFacility : "default", syslogfacility);
- }
- log_println(1, "\tdebug level set to %d", debug);
-
- logErLog(ErLogFileName, &tt, "notice", "fakewww server started (NDT version %s)", VERSION);
- logErLog(ErLogFileName, &tt, "notice", "\tport = %d", I2AddrPort(listenaddr));
- logErLog(ErLogFileName, &tt, "notice", "\tfederated mode = %s", (federated == 1) ? "on" : "off");
- logErLog(ErLogFileName, &tt, "notice", "\taccess log = %s", AcLogFileName);
- logErLog(ErLogFileName, &tt, "notice", "\terror log = %s", ErLogFileName);
- logErLog(ErLogFileName, &tt, "notice", "\tbasedir = %s", basedir);
- if (usesyslog) {
- logErLog(ErLogFileName, &tt, "notice", "\tsyslog facility = %s (%d)", SysLogFacility ? SysLogFacility : "default", syslogfacility);
- }
- logErLog(ErLogFileName, &tt, "notice", "\tdebug level set to %d", debug);
-
- if (usesyslog == 1)
- syslog(LOG_FACILITY|LOG_INFO, "Fakewww (ver %s) process started",
- VERSION);
- signal(SIGCHLD, reap); /* get rid of zombies */
-
- /*
- * Wait for a connection from a client process.
- * This is an example of a concurrent server.
- */
-
- for(;;){
- clilen = sizeof(cli_addr);
- newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
- if (newsockfd < 0){
- if (errno == EINTR) continue; /*sig child */
- err_sys("Fakewww server: accept error");
- }
-
- if (fork() == 0){ /* child */
- I2Addr caddr = I2AddrBySAddr(get_errhandle(), (struct sockaddr *) &cli_addr, clilen, 0, 0);
- alarm(300); /* kill child off after 5 minutes, should never happen */
- close(sockfd);
- dowww(newsockfd, caddr, listenport, AcLogFileName, ErLogFileName, federated, max_ttl);
- exit(0);
- }
- close(newsockfd);
- }
+
+ /*
+ * Bind our local address so that the client can send to us.
+ */
+ if (srcname && !(listenaddr = I2AddrByNode(get_errhandle(),
srcname))) {
+ err_sys("server: Invalid source address specified");
+ }
+ if ((listenaddr = CreateListenSocket(listenaddr, listenport,
conn_options,
+ 0)) == NULL) {
+ err_sys("server: CreateListenSocket failed");
+ }
+ sockfd = I2AddrFD(listenaddr);
+
+ tt = time(0);
+ log_println(1, "%15.15s fakewww server started (NDT version %s)",
+ ctime(&tt) + 4, VERSION);
+ log_println(1, "\tport = %d", I2AddrPort(listenaddr));
+ log_println(1, "\tfederated mode = %s", (federated == 1) ? "on" :
"off");
+ log_println(1, "\taccess log = %s\n\terror log = %s", AcLogFileName,
+ ErLogFileName);
+ log_println(1, "\tbasedir = %s", basedir);
+ if (usesyslog) {
+ log_println(1, "\tsyslog facility = %s (%d)",
+ SysLogFacility ? SysLogFacility : "default",
syslogfacility);
+ }
+ log_println(1, "\tdebug level set to %d", debug);
+
+ logErLog(ErLogFileName, &tt, "notice",
+ "fakewww server started (NDT version %s)", VERSION);
+ logErLog(ErLogFileName, &tt, "notice", "\tport = %d",
+ I2AddrPort(listenaddr));
+ logErLog(ErLogFileName, &tt, "notice", "\tfederated mode = %s",
+ (federated == 1) ? "on" : "off");
+ logErLog(ErLogFileName, &tt, "notice", "\taccess log = %s", AcLogFileName);
+ logErLog(ErLogFileName, &tt, "notice", "\terror log = %s",
ErLogFileName);
+ logErLog(ErLogFileName, &tt, "notice", "\tbasedir = %s", basedir);
+ if (usesyslog) {
+ logErLog(ErLogFileName, &tt, "notice", "\tsyslog facility = %s
(%d)",
+ SysLogFacility ? SysLogFacility : "default",
syslogfacility);
+ }
+ logErLog(ErLogFileName, &tt, "notice", "\tdebug level set to %d",
debug);
+
+ if (usesyslog == 1)
+ syslog(LOG_FACILITY | LOG_INFO, "Fakewww (ver %s) process
started",
+ VERSION);
+ signal(SIGCHLD, reap); /* get rid of zombies */
+
+ /*
+ * Wait for a connection from a client process.
+ * This is an example of a concurrent server.
+ */
+
+ for (;;) {
+ clilen = sizeof(cli_addr);
+ newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr,
&clilen);
+ if (newsockfd < 0) {
+ if (errno == EINTR)
+ continue; /*sig child */
+ err_sys("Fakewww server: accept error");
+ }
+
+ if (fork() == 0) { /* child */
+ I2Addr caddr = I2AddrBySAddr(get_errhandle(),
+ (struct sockaddr *) &cli_addr,
clilen, 0, 0);
+ alarm(300); /* kill child off after 5 minutes, should
never happen */
+ close(sockfd);
+ dowww(newsockfd, caddr, listenport, AcLogFileName,
ErLogFileName,
+ federated, max_ttl);
+ exit(0);
+ }
+ close(newsockfd);
+ }

}

#include <sys/wait.h>
-void
-reap(int signo)
-{
- /*
- * avoid zombies, since we run forever
- * Use the wait3() system call with the WNOHANG option.
- */
- int pid;
- union wait status;
-
- while ( (pid = wait3(&status, WNOHANG, (struct rusage *) 0)) > 0)
- ;
+void reap(int signo) {
+ /*
+ * avoid zombies, since we run forever
+ * Use the wait3() system call with the WNOHANG option.
+ */
+ int pid;
+ union wait status;
+
+ while ((pid = wait3(&status, WNOHANG, (struct rusage *) 0)) > 0)
+ ;
}

/*
@@ -335,396 +338,404 @@
* the null (the same as strlen(3)).
*/

-int
-readline(fd, ptr, maxlen)
-register int fd;
-register char *ptr;
-register int maxlen;
-{
- int n, rc;
- char c;
-
- for (n = 1; n < maxlen; n++) {
- if ( (rc = read(fd, &c, 1)) == 1) {
- *ptr++ = c;
- if (c == '\n')
- break;
- } else if (rc == 0) {
- if (n == 1)
- return(0); /* EOF, no data read */
- else
- break; /* EOF, some data was read */
- } else
- return(-1); /* error */
- }
-
- *ptr = 0;
- return(n);
+int readline(fd, ptr, maxlen)
+ register int fd;register char *ptr;register int maxlen; {
+ int n, rc;
+ char c;
+
+ for (n = 1; n < maxlen; n++) {
+ if ((rc = read(fd, &c, 1)) == 1) {
+ *ptr++ = c;
+ if (c == '\n')
+ break;
+ } else if (rc == 0) {
+ if (n == 1)
+ return (0); /* EOF, no data read */
+ else
+ break; /* EOF, some data was read */
+ } else
+ return (-1); /* error */
+ }
+
+ *ptr = 0;
+ return (n);
}

-void
-trim(char* ptr) {
- while (*ptr) {
- if ((*ptr == '\r') || (*ptr == '\n')) {
- *ptr = 0;
- break;
- }
- ptr++;
- }
+void trim(char* ptr) {
+ while (*ptr) {
+ if ((*ptr == '\r') || (*ptr == '\n')) {
+ *ptr = 0;
+ break;
+ }
+ ptr++;
+ }
}

-void
-dowww(int sd, I2Addr addr, char* port, char* AcLogFileName, char* ErLogFileName, int fed_mode, int max_ttl)
-{
- /* process web request */
- int fd, n, i, ok;
- char *p, filename[256], line[256], *ctime();
- char htmlfile[256];
- u_int32_t IPlist[64], srv_addr;
+void dowww(int sd, I2Addr addr, char* port, char* AcLogFileName,
+ char* ErLogFileName, int fed_mode, int max_ttl) {
+ /* process web request */
+ int fd, n, i, ok;
+ char *p, filename[256], line[256], *ctime();
+ char htmlfile[256];
+ u_int32_t IPlist[64], srv_addr;
#ifdef AF_INET6
- u_int32_t IP6list[64][4];
- u_int32_t srv_addr6[4];
+ u_int32_t IP6list[64][4];
+ u_int32_t srv_addr6[4];
#endif
- I2Addr serv_addr = NULL;
- I2Addr loc_addr=NULL;
- time_t tt;
- char nodename[200];
- char onenodename[200];
- size_t nlen = 199;
- Allowed* ptr;
- char lineBuf[100];
- char useragentBuf[100];
- char refererBuf[100];
- int answerSize;
-
- memset(nodename, 0, 200);
- I2AddrNodeName(addr, nodename, &nlen);
-
- while ((n = readline(sd, buff, sizeof(buff))) > 0) {
- if (n < 3)
- break; /* end of html input */
- p = (char *) strstr(buff, "GET");
- if (p == NULL)
- continue;
- memset(lineBuf, 0, 100);
- memset(useragentBuf, 0, 100);
- memset(refererBuf, 0, 100);
- strncpy(lineBuf, buff, 99);
- trim(lineBuf);
- sscanf(p+4, "%s", filename);
- while ((n = readline(sd, buff, sizeof(buff))) > 0) {
- if ((p = (char *) strstr(buff, "User-Agent"))) {
- strncpy(useragentBuf, p+12, 99);
- trim(useragentBuf);
- }
- if ((p = (char *) strstr(buff, "Referer"))) {
- strncpy(refererBuf, p+9, 99);
- trim(refererBuf);
- }
- if (n < 3)
- break; /* end of html input */
- }
- if (strcmp(filename, "/") == 0) {
- /* feed em the default page */
- /* strcpy(filename, Mypagefile); */
- /* By default we now send out the redirect page */
-
- log_println(4, "Received connection from [%s]", nodename);
-
- if (fed_mode == 1) {
- struct sockaddr* csaddr;
- csaddr = I2AddrSAddr(addr, NULL);
- if (csaddr->sa_family == AF_INET) { /* make the IPv4 find */
- struct sockaddr_in* cli_addr = (struct sockaddr_in*) csaddr;
- find_route(cli_addr->sin_addr.s_addr, IPlist, max_ttl);
- for (i=0; IPlist[i]!=cli_addr->sin_addr.s_addr; i++) {
- sprintf(p, "%u.%u.%u.%u", IPlist[i] & 0xff, (IPlist[i] >> 8) & 0xff,
- (IPlist[i] >> 16) & 0xff, (IPlist[i] >> 24) & 0xff);
- log_println(4, "loop IPlist[%d] = %s", i, p);
- if (i == max_ttl) {
- log_println(4, "Oops, destination not found!");
- break;
- }
- }
- /* print out last item on list */
- sprintf(p, "%u.%u.%u.%u", IPlist[i] & 0xff,
- (IPlist[i] >> 8) & 0xff,
- (IPlist[i] >> 16) & 0xff, (IPlist[i] >> 24) & 0xff);
- log_println(4, "IPlist[%d] = %s", i, p);
-
- srv_addr = find_compare(IPlist, i);
-
- /* the find_compare() routine returns the IP address of the 'closest'
- * NDT server. It does this by comparing the clients address to a
- * map of routes between all servers. If this comparison fails, the
- * routine returns 0. In that case, simply use this server.
- */
- if (srv_addr == 0) {
- serv_addr = I2AddrByLocalSockFD(get_errhandle(), sd, False);
- memset(onenodename, 0, 200);
- nlen = 199;
- I2AddrNodeName(serv_addr, onenodename, &nlen);
- log_println(4, "find_compare() returned 0, reset to [%s]", onenodename);
- srv_addr = ((struct sockaddr_in*)I2AddrSAddr(serv_addr, NULL))->sin_addr.s_addr;
- }
-
- log_println(4, "Client host [%s] should be redirected to FLM server [%u.%u.%u.%u]",
- inet_ntoa(cli_addr->sin_addr), srv_addr & 0xff, (srv_addr >> 8) & 0xff,
- (srv_addr >> 16) & 0xff, (srv_addr >> 24) & 0xff);
-
- /* At this point, the srv_addr variable contains the IP address of the
- * server we want to re-direct the connect to. So we should generate a
- * new html page, and sent that back to the client. This new page will
- * use the HTML refresh option with a short (2 second) timer to cause the
- * client's browser to just to the new server.
- *
- * RAC 3/9/04
- */
-
- writen(sd, MsgRedir1, strlen(MsgRedir1));
- writen(sd, MsgRedir2, strlen(MsgRedir2));
- sprintf(line, "http://%u.%u.%u.%u:%s/tcpbw100.html";,
- srv_addr & 0xff, (srv_addr >> 8) & 0xff,
- (srv_addr >> 16) & 0xff, (srv_addr >> 24) & 0xff,
- port);
- writen(sd, line, strlen(line));
- writen(sd, MsgRedir3, strlen(MsgRedir3));
- writen(sd, MsgRedir4, strlen(MsgRedir4));
- answerSize = strlen(MsgRedir4);
- sprintf(line, "url=http://%u.%u.%u.%u:%s/tcpbw100.html";,
- srv_addr & 0xff, (srv_addr >> 8) & 0xff,
- (srv_addr >> 16) & 0xff, (srv_addr >> 24) & 0xff,
- port);
- writen(sd, line, strlen(line));
- answerSize += strlen(line);
- writen(sd, MsgRedir5, strlen(MsgRedir5));
- answerSize += strlen(MsgRedir5);
- sprintf(line, "href=\"http://%u.%u.%u.%u:%s/tcpbw100.html\"";,
- srv_addr & 0xff, (srv_addr >> 8) & 0xff,
- (srv_addr >> 16) & 0xff, (srv_addr >> 24) & 0xff,
- port);
- writen(sd, line, strlen(line));
- answerSize += strlen(line);
- writen(sd, MsgRedir6, strlen(MsgRedir6));
- answerSize += strlen(MsgRedir6);
- log_println(3, "%s redirected to remote server [%u.%u.%u.%u:%s]",
- inet_ntoa(cli_addr->sin_addr), srv_addr & 0xff, (srv_addr >> 8) & 0xff,
- (srv_addr >> 16) & 0xff, (srv_addr >> 24) & 0xff, port);
- tt = time(0);
- logErLog(ErLogFileName, &tt, "notice", "[%s] redirected to remote server [%u.%u.%u.%u:%s]",
- inet_ntoa(cli_addr->sin_addr),
- srv_addr & 0xff, (srv_addr >> 8) & 0xff,
- (srv_addr >> 16) & 0xff, (srv_addr >> 24) & 0xff, port);
- logAcLog(AcLogFileName, &tt, inet_ntoa(cli_addr->sin_addr), lineBuf, 307, answerSize,
- useragentBuf, refererBuf);
- break;
- }
+ I2Addr serv_addr = NULL;
+ I2Addr loc_addr = NULL;
+ time_t tt;
+ char nodename[200];
+ char onenodename[200];
+ size_t nlen = 199;
+ Allowed* ptr;
+ char lineBuf[100];
+ char useragentBuf[100];
+ char refererBuf[100];
+ int answerSize;
+
+ memset(nodename, 0, 200);
+ I2AddrNodeName(addr, nodename, &nlen);
+
+ while ((n = readline(sd, buff, sizeof(buff))) > 0) {
+ if (n < 3)
+ break; /* end of html input */
+ p = (char *) strstr(buff, "GET");
+ if (p == NULL)
+ continue;
+ memset(lineBuf, 0, 100);
+ memset(useragentBuf, 0, 100);
+ memset(refererBuf, 0, 100);
+ strncpy(lineBuf, buff, 99);
+ trim(lineBuf);
+ sscanf(p + 4, "%s", filename);
+ while ((n = readline(sd, buff, sizeof(buff))) > 0) {
+ if ((p = (char *) strstr(buff, "User-Agent"))) {
+ strncpy(useragentBuf, p + 12, 99);
+ trim(useragentBuf);
+ }
+ if ((p = (char *) strstr(buff, "Referer"))) {
+ strncpy(refererBuf, p + 9, 99);
+ trim(refererBuf);
+ }
+ if (n < 3)
+ break; /* end of html input */
+ }
+ if (strcmp(filename, "/") == 0) {
+ /* feed em the default page */
+ /* strcpy(filename, Mypagefile); */
+ /* By default we now send out the redirect page */
+
+ log_println(4, "Received connection from [%s]",
nodename);
+
+ if (fed_mode == 1) {
+ struct sockaddr* csaddr;
+ csaddr = I2AddrSAddr(addr, NULL);
+ if (csaddr->sa_family == AF_INET) { /* make
the IPv4 find */
+ struct sockaddr_in* cli_addr =
(struct sockaddr_in*) csaddr;
+ find_route(cli_addr->sin_addr.s_addr,
IPlist, max_ttl);
+ for (i = 0; IPlist[i] !=
cli_addr->sin_addr.s_addr; i++) {
+ sprintf(p, "%u.%u.%u.%u",
IPlist[i] & 0xff,
+ (IPlist[i] >> 8)
& 0xff,
+ (IPlist[i] >> 16)
& 0xff,
+ (IPlist[i] >> 24)
& 0xff);
+ log_println(4, "loop IPlist[%d] =
%s", i, p);
+ if (i == max_ttl) {
+ log_println(4, "Oops,
destination not found!");
+ break;
+ }
+ }
+ /* print out last item on list */
+ sprintf(p, "%u.%u.%u.%u", IPlist[i] &
0xff,
+ (IPlist[i] >> 8) & 0xff,
(IPlist[i] >> 16) & 0xff,
+ (IPlist[i] >> 24) &
0xff);
+ log_println(4, "IPlist[%d] = %s", i,
p);
+
+ srv_addr = find_compare(IPlist, i);
+
+ /* the find_compare() routine returns
the IP address of the 'closest'
+ * NDT server. It does this by
comparing the clients address to a
+ * map of routes between all servers.
If this comparison fails, the
+ * routine returns 0. In that case,
simply use this server.
+ */
+ if (srv_addr == 0) {
+ serv_addr =
I2AddrByLocalSockFD(get_errhandle(), sd,
+ False);
+ memset(onenodename, 0, 200);
+ nlen = 199;
+ I2AddrNodeName(serv_addr,
onenodename, &nlen);
+ log_println(4,
+ "find_compare()
returned 0, reset to [%s]",
+ onenodename);
+ srv_addr = ((struct
sockaddr_in*) I2AddrSAddr(serv_addr,
+
NULL))->sin_addr.s_addr;
+ }
+
+ log_println(
+ 4,
+ "Client host [%s] should
be redirected to FLM server [%u.%u.%u.%u]",
+
inet_ntoa(cli_addr->sin_addr), srv_addr & 0xff,
+ (srv_addr >> 8) & 0xff,
(srv_addr >> 16) & 0xff,
+ (srv_addr >> 24) &
0xff);
+
+ /* At this point, the srv_addr
variable contains the IP address of the
+ * server we want to re-direct the connect to. So we should generate a
+ * new html page, and sent that back to the client. This new page will
+ * use the HTML refresh option with a short (2 second) timer to cause the
+ * client's browser to just to the
new server.
+ *
+ * RAC 3/9/04
+ */
+
+ writen(sd, MsgRedir1,
strlen(MsgRedir1));
+ writen(sd, MsgRedir2,
strlen(MsgRedir2));
+ sprintf(line,
"http://%u.%u.%u.%u:%s/tcpbw100.html";,
+ srv_addr & 0xff, (srv_addr
>> 8) & 0xff,
+ (srv_addr >> 16) & 0xff,
(srv_addr >> 24) & 0xff,
+ port);
+ writen(sd, line, strlen(line));
+ writen(sd, MsgRedir3,
strlen(MsgRedir3));
+ writen(sd, MsgRedir4,
strlen(MsgRedir4));
+ answerSize = strlen(MsgRedir4);
+ sprintf(line,
"url=http://%u.%u.%u.%u:%s/tcpbw100.html";,
+ srv_addr & 0xff, (srv_addr
>> 8) & 0xff,
+ (srv_addr >> 16) & 0xff,
(srv_addr >> 24) & 0xff,
+ port);
+ writen(sd, line, strlen(line));
+ answerSize += strlen(line);
+ writen(sd, MsgRedir5,
strlen(MsgRedir5));
+ answerSize += strlen(MsgRedir5);
+ sprintf(line,
+
"href=\"http://%u.%u.%u.%u:%s/tcpbw100.html\"";,
+ srv_addr & 0xff, (srv_addr
>> 8) & 0xff,
+ (srv_addr >> 16) & 0xff,
(srv_addr >> 24) & 0xff,
+ port);
+ writen(sd, line, strlen(line));
+ answerSize += strlen(line);
+ writen(sd, MsgRedir6,
strlen(MsgRedir6));
+ answerSize += strlen(MsgRedir6);
+ log_println(3,
+ "%s redirected to remote
server [%u.%u.%u.%u:%s]",
+
inet_ntoa(cli_addr->sin_addr), srv_addr & 0xff,
+ (srv_addr >> 8) & 0xff,
(srv_addr >> 16) & 0xff,
+ (srv_addr >> 24) &
0xff, port);
+ tt = time(0);
+ logErLog(ErLogFileName, &tt, "notice",
+ "[%s] redirected to remote
server [%u.%u.%u.%u:%s]",
+
inet_ntoa(cli_addr->sin_addr), srv_addr & 0xff,
+ (srv_addr >> 8) & 0xff,
(srv_addr >> 16) & 0xff,
+ (srv_addr >> 24) &
0xff, port);
+ logAcLog(AcLogFileName, &tt,
inet_ntoa(cli_addr->sin_addr),
+ lineBuf, 307,
answerSize, useragentBuf, refererBuf);
+ break;
+ }
#ifdef AF_INET6
- else if (csaddr->sa_family == AF_INET6) {
- struct sockaddr_in6* cli_addr = (struct sockaddr_in6*) csaddr;
- socklen_t onenode_len;
- find_route6(nodename, IP6list, max_ttl);
- for (i = 0; memcmp(IP6list[i], &cli_addr->sin6_addr, sizeof(cli_addr->sin6_addr)); i++) {
- memset(onenodename, 0, 200);
- onenode_len = 199;
- inet_ntop(AF_INET6, (void *) IP6list[i], onenodename, onenode_len);
- log_println(4, "loop IP6list[%d], = %s", i, onenodename);
- if (i == max_ttl) {
- log_println(4, "Oops, destination not found!");
- break;
- }
- }
- /* print out last item on list */
-
- if (get_debuglvl() > 3) {
- memset(onenodename, 0, 200);
- onenode_len = 199;
- inet_ntop(AF_INET6, (void *) IP6list[i], onenodename, onenode_len);
- log_println(4, "IP6list[%d] = %s", i, onenodename);
- }
-
- srv_addr = find_compare6(srv_addr6, IP6list, i);
- if (srv_addr == 0) {
- serv_addr = I2AddrByLocalSockFD(get_errhandle(), sd, False);
- memset(onenodename, 0, 200);
- nlen = 199;
- I2AddrNodeName(serv_addr, onenodename, &nlen);
- log_println(4, "find_compare6() returned 0, reset to [%s]", onenodename);
- memcpy(srv_addr6, &((struct sockaddr_in6*)I2AddrSAddr(serv_addr, NULL))->sin6_addr, 16);
- }
-
- nlen = 199;
- memset(onenodename, 0, 200);
- inet_ntop(AF_INET6, (void *) srv_addr6, onenodename, nlen);
-
- log_println(4, "Client host [%s] should be redirected to FLM server [%s]",
- nodename, onenodename);
-
- writen(sd, MsgRedir1, strlen(MsgRedir1));
- writen(sd, MsgRedir2, strlen(MsgRedir2));
- sprintf(line, "http://[%s]:%s/tcpbw100.html";, onenodename, port);
- writen(sd, line, strlen(line));
- writen(sd, MsgRedir3, strlen(MsgRedir3));
- writen(sd, MsgRedir4, strlen(MsgRedir4));
- answerSize = strlen(MsgRedir4);
- sprintf(line, "url=http://[%s]:%s/tcpbw100.html";, onenodename, port);
- writen(sd, line, strlen(line));
- answerSize += strlen(line);
- writen(sd, MsgRedir5, strlen(MsgRedir5));
- answerSize += strlen(MsgRedir5);
- sprintf(line, "href=\"http://[%s]:%s/tcpbw100.html\"";, onenodename, port);
- writen(sd, line, strlen(line));
- answerSize += strlen(line);
- writen(sd, MsgRedir6, strlen(MsgRedir6));
- answerSize += strlen(MsgRedir6);
- log_println(3, "%s redirected to remote server [[%s]:%s]", nodename, onenodename, port);
- tt = time(0);
- logErLog(ErLogFileName, &tt, "notice", "[%s] redirected to remote server [[%s]:%s]",
- nodename, onenodename, port);
- logAcLog(AcLogFileName, &tt, nodename, lineBuf, 307, answerSize,
- useragentBuf, refererBuf);
- break;
- }
+ else if (csaddr->sa_family == AF_INET6) {
+ struct sockaddr_in6* cli_addr =
(struct sockaddr_in6*) csaddr;
+ socklen_t onenode_len;
+ find_route6(nodename, IP6list,
max_ttl);
+ for (i = 0; memcmp(IP6list[i], &cli_addr->sin6_addr, sizeof(cli_addr->sin6_addr)); i++) {
+ memset(onenodename, 0, 200);
+ onenode_len = 199;
+ inet_ntop(AF_INET6, (void *)
IP6list[i], onenodename, onenode_len);
+ log_println(4, "loop IP6list[%d],
= %s", i, onenodename);
+ if (i == max_ttl) {
+ log_println(4, "Oops,
destination not found!");
+ break;
+ }
+ }
+ /* print out last item on list */
+
+ if (get_debuglvl() > 3) {
+ memset(onenodename, 0, 200);
+ onenode_len = 199;
+ inet_ntop(AF_INET6, (void *)
IP6list[i], onenodename, onenode_len);
+ log_println(4, "IP6list[%d] =
%s", i, onenodename);
+ }
+
+ srv_addr = find_compare6(srv_addr6,
IP6list, i);
+ if (srv_addr == 0) {
+ serv_addr =
I2AddrByLocalSockFD(get_errhandle(), sd, False);
+ memset(onenodename, 0, 200);
+ nlen = 199;
+ I2AddrNodeName(serv_addr,
onenodename, &nlen);
+ log_println(4, "find_compare6() returned 0, reset to [%s]", onenodename);
+ memcpy(srv_addr6, &((struct sockaddr_in6*)I2AddrSAddr(serv_addr, NULL))->sin6_addr, 16);
+ }
+
+ nlen = 199;
+ memset(onenodename, 0, 200);
+ inet_ntop(AF_INET6, (void *)
srv_addr6, onenodename, nlen);
+
+ log_println(4, "Client host [%s] should be redirected to FLM server [%s]",
+ nodename,
onenodename);
+
+ writen(sd, MsgRedir1,
strlen(MsgRedir1));
+ writen(sd, MsgRedir2,
strlen(MsgRedir2));
+ sprintf(line,
"http://[%s]:%s/tcpbw100.html";, onenodename, port);
+ writen(sd, line, strlen(line));
+ writen(sd, MsgRedir3,
strlen(MsgRedir3));
+ writen(sd, MsgRedir4,
strlen(MsgRedir4));
+ answerSize = strlen(MsgRedir4);
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/src/genplot.c Sun Aug 19 03:26:07 2007
+++ /trunk/src/genplot.c Mon Apr 30 13:46:39 2012
@@ -34,633 +34,651 @@

#include "usage.h"

-char *color[16] = {"green",
- "blue",
- "orange",
- "red",
- "yellow",
- "magenta",
- "pink",
- "white",
- "black"
- };
-
-static struct option long_options[] = {
- {"both", 0, 0, 'b'},
- {"multi", 1, 0, 'm'},
- {"text", 0, 0, 't'},
- {"CurCwnd", 0, 0, 'C'},
- {"CurRwinRcvd", 0, 0, 'R'},
- {"throughput", 0, 0, 'S'},
- {"cwndtime", 0, 0, 'c'},
- {"help", 0, 0, 'h'},
- {"version", 0, 0, 'v'},
- {0, 0, 0, 0}
-};
-
-int
-checkmz(int x)
-{
- if (x == 2147483647) {
- return -1;
- }
- return x;
+char *color[16] = { "green", "blue", "orange", "red", "yellow", "magenta",
+ "pink", "white", "black" };
+
+static struct option long_options[] = { { "both", 0, 0, 'b' }, { "multi", 1, 0,
+ 'm' }, { "text", 0, 0, 't' }, { "CurCwnd", 0, 0, 'C' }, {
"CurRwinRcvd",
+ 0, 0, 'R' }, { "throughput", 0, 0, 'S' }, { "cwndtime", 0, 0,
'c' }, {
+ "help", 0, 0, 'h' }, { "version", 0, 0, 'v' }, { 0, 0, 0, 0 }
};
+
+int checkmz(int x) {
+ if (x == 2147483647) {
+ return -1;
+ }
+ return x;
}

void get_title(web100_snapshot* snap, web100_log* log, web100_agent* agent,
- web100_group* group, char* title, char* remport)
-{
+ web100_group* group, char* title, char* remport) {

web100_var* var;
char buf[128];

if ((web100_snap_from_log(snap, log)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_log_open_read");
- return;
- }
-
- if ((web100_agent_find_var_and_group(agent, "LocalAddress", &group, &var)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_agent_find_var_and_group");
- exit(EXIT_FAILURE);
- }
- if ((web100_snap_read(var, snap, buf)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_snap_read");
- exit(EXIT_FAILURE);
- }
- strcpy(title, web100_value_to_text(web100_get_var_type(var), buf));
+ web100_perror("web100_log_open_read");
+ return;
+ }
+
+ if ((web100_agent_find_var_and_group(agent, "LocalAddress", &group,
&var))
+ != WEB100_ERR_SUCCESS) {
+ web100_perror("web100_agent_find_var_and_group");
+ exit(EXIT_FAILURE);
+ }
+ if ((web100_snap_read(var, snap, buf)) != WEB100_ERR_SUCCESS) {
+ web100_perror("web100_snap_read");
+ exit(EXIT_FAILURE);
+ }
+ strcpy(title, web100_value_to_text(web100_get_var_type(var), buf));
strncat(title, ":", 1);
- if ((web100_agent_find_var_and_group(agent, "LocalPort", &group, &var)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_agent_find_var_and_group");
- exit(EXIT_FAILURE);
- }
- if ((web100_snap_read(var, snap, buf)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_snap_read");
- exit(EXIT_FAILURE);
- }
- strcat(title, web100_value_to_text(web100_get_var_type(var), buf));
+ if ((web100_agent_find_var_and_group(agent, "LocalPort", &group,
&var))
+ != WEB100_ERR_SUCCESS) {
+ web100_perror("web100_agent_find_var_and_group");
+ exit(EXIT_FAILURE);
+ }
+ if ((web100_snap_read(var, snap, buf)) != WEB100_ERR_SUCCESS) {
+ web100_perror("web100_snap_read");
+ exit(EXIT_FAILURE);
+ }
+ strcat(title, web100_value_to_text(web100_get_var_type(var), buf));
strncat(title, " --> ", 5);
- if ((web100_agent_find_var_and_group(agent, "RemAddress", &group, &var)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_agent_find_var_and_group");
- exit(EXIT_FAILURE);
- }
- if ((web100_snap_read(var, snap, buf)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_snap_read");
- exit(EXIT_FAILURE);
- }
- strcat(title, web100_value_to_text(web100_get_var_type(var), buf));
- if ((web100_agent_find_var_and_group(agent, "RemPort", &group, &var)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_agent_find_var_and_group");
- exit(EXIT_FAILURE);
- }
- if ((web100_snap_read(var, snap, buf)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_snap_read");
- exit(EXIT_FAILURE);
- }
- strcpy(remport, web100_value_to_text(web100_get_var_type(var), buf));
- /* printf("%s:%s\n", title, remport); */
+ if ((web100_agent_find_var_and_group(agent, "RemAddress", &group,
&var))
+ != WEB100_ERR_SUCCESS) {
+ web100_perror("web100_agent_find_var_and_group");
+ exit(EXIT_FAILURE);
+ }
+ if ((web100_snap_read(var, snap, buf)) != WEB100_ERR_SUCCESS) {
+ web100_perror("web100_snap_read");
+ exit(EXIT_FAILURE);
+ }
+ strcat(title, web100_value_to_text(web100_get_var_type(var), buf));
+ if ((web100_agent_find_var_and_group(agent, "RemPort", &group, &var))
+ != WEB100_ERR_SUCCESS) {
+ web100_perror("web100_agent_find_var_and_group");
+ exit(EXIT_FAILURE);
+ }
+ if ((web100_snap_read(var, snap, buf)) != WEB100_ERR_SUCCESS) {
+ web100_perror("web100_snap_read");
+ exit(EXIT_FAILURE);
+ }
+ strcpy(remport, web100_value_to_text(web100_get_var_type(var), buf));
+ /* printf("%s:%s\n", title, remport); */
}

-void
-plot_var(char *list, int cnt, char *name, web100_snapshot* snap,
- web100_log* log, web100_agent* agent, web100_group* group,
- int(*func)(const int arg, const int value))
-{
-
- char *varg;
- char buf[256];
- web100_var* var;
- char varlist[256], lname[256], remport[8];
- char title[256];
- int i, first=0;
- float x1, x2, y1[32], y2[32];
- FILE *fn;
-
-
- /* Write a xplot file out to the requested file.
- * Start by extracting the connection info for the
- * page title. Then its a series of line statements
- * with the x1 y1 x2 y2 coordinates.
- */
-
- memset(lname, 0, 256);
-
- get_title(snap, log, agent, group, title, remport);
-
- if (name == NULL) {
- fn = stdout;
- strncpy(name, "Unknown", 7);
- } else {
- strncpy(lname, name, strlen(name));
- strcat(lname, ".");
- strcat(lname, remport);
- strcat(lname, ".xpl");
- fn = fopen(lname, "w");
- }
-
- fprintf(fn, "double double\ntitle\n");
- fprintf(fn, "%s:%s (%s)\n", title, remport, name);
- if ((strncmp(name, "Throughput", 10)) == 0)
- fprintf(fn, "xlabel\nTime\nylabel\nMbits/sec\n");
- else
- fprintf(fn, "xlabel\nTime\nylabel\nKilo Bytes\n");
-
- x1 = x2 = 0;
- for (i=0; i<32; i++) {
- y1[i] = 0;
- y2[i] = 0;
- }
- first = 0;
-
- for (;;) {
- if (first != 0) {
- if ((web100_snap_from_log(snap, log)) != WEB100_ERR_SUCCESS) {
- /* web100_perror("web100_log_open_read"); */
- fprintf(fn, "go\n");
- return;
- }
- }
- strncpy(varlist, list, strlen(list)+1);
- varg=strtok(varlist, ",");
- for (i=0; i<cnt; i++) {
- if ((web100_agent_find_var_and_group(agent, varg, &group, &var)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_agent_find_var_and_group");
- exit(EXIT_FAILURE);
- }
-
- if ((web100_snap_read(var, snap, buf)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_snap_read");
- exit(EXIT_FAILURE);
- }
-
- if (i == 0) {
- if (first == 0) {
- if (func) {
- x1 = func(i, checkmz(atoi(web100_value_to_text(web100_get_var_type(var), buf))));
- }
- else {
- x1 = checkmz(atoi(web100_value_to_text(web100_get_var_type(var), buf)));
- }
- } else {
- x1 = x2;
- }
- } else {
- if (first == 0) {
- if (func) {
- y1[i-1] = func(i, checkmz(atoi(web100_value_to_text(web100_get_var_type(var), buf))));
- }
- else {
- y1[i-1] = checkmz(atoi(web100_value_to_text(web100_get_var_type(var), buf)));
- }
- } else {
- y1[i-1] = y2[i-1];
- }
- }
- varg = strtok(NULL, ",");
- }
-
- first++;
- strncpy(varlist, list, strlen(list)+1);
- varg=strtok(varlist, ",");
- for (i=0; i<cnt; i++) {
- if ((web100_agent_find_var_and_group(agent, varg, &group, &var)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_agent_find_var_and_group");
- exit(EXIT_FAILURE);
- }
-
- if ((web100_snap_read(var, snap, buf)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_snap_read");
- exit(EXIT_FAILURE);
- }
-
- if (i == 0) {
- if (func) {
- x2 = func(i, checkmz(atoi(web100_value_to_text(web100_get_var_type(var), buf))));
- }
- else {
- x2 = checkmz(atoi(web100_value_to_text(web100_get_var_type(var), buf)));
- }
- }
- else {
- if (func) {
- y2[i-1] = func(i, checkmz(atoi(web100_value_to_text(web100_get_var_type(var), buf))));
- }
- else {
- y2[i-1] = checkmz(atoi(web100_value_to_text(web100_get_var_type(var), buf)));
- }
- fprintf(fn, "%s\nline %0.4f %0.4f %0.4f %0.4f\n", color[i-1], x1/1000000, y1[i-1]/1024,
- x2/1000000, y2[i-1]/1024);
- }
- varg = strtok(NULL, ",");
- }
- }
- fprintf(fn, "go\n");
+void plot_var(char *list, int cnt, char *name, web100_snapshot* snap,
+ web100_log* log, web100_agent* agent, web100_group* group,
+ int(*func)(const int arg, const int value)) {
+
+ char *varg;
+ char buf[256];
+ web100_var* var;
+ char varlist[256], lname[256], remport[8];
+ char title[256];
+ int i, first = 0;
+ float x1, x2, y1[32], y2[32];
+ FILE *fn;
+
+ /* Write a xplot file out to the requested file.
+ * Start by extracting the connection info for the
+ * page title. Then its a series of line statements
+ * with the x1 y1 x2 y2 coordinates.
+ */
+
+ memset(lname, 0, 256);
+
+ get_title(snap, log, agent, group, title, remport);
+
+ if (name == NULL) {
+ fn = stdout;
+ strncpy(name, "Unknown", 7);
+ } else {
+ strncpy(lname, name, strlen(name));
+ strcat(lname, ".");
+ strcat(lname, remport);
+ strcat(lname, ".xpl");
+ fn = fopen(lname, "w");
+ }
+
+ fprintf(fn, "double double\ntitle\n");
+ fprintf(fn, "%s:%s (%s)\n", title, remport, name);
+ if ((strncmp(name, "Throughput", 10)) == 0)
+ fprintf(fn, "xlabel\nTime\nylabel\nMbits/sec\n");
+ else
+ fprintf(fn, "xlabel\nTime\nylabel\nKilo Bytes\n");
+
+ x1 = x2 = 0;
+ for (i = 0; i < 32; i++) {
+ y1[i] = 0;
+ y2[i] = 0;
+ }
+ first = 0;
+
+ for (;;) {
+ if (first != 0) {
+ if ((web100_snap_from_log(snap, log)) !=
WEB100_ERR_SUCCESS) {
+ /* web100_perror("web100_log_open_read"); */
+ fprintf(fn, "go\n");
+ return;
+ }
+ }
+ strncpy(varlist, list, strlen(list) + 1);
+ varg = strtok(varlist, ",");
+ for (i = 0; i < cnt; i++) {
+ if ((web100_agent_find_var_and_group(agent, varg, &group,
&var))
+ != WEB100_ERR_SUCCESS) {
+
web100_perror("web100_agent_find_var_and_group");
+ exit(EXIT_FAILURE);
+ }
+
+ if ((web100_snap_read(var, snap, buf)) !=
WEB100_ERR_SUCCESS) {
+ web100_perror("web100_snap_read");
+ exit(EXIT_FAILURE);
+ }
+
+ if (i == 0) {
+ if (first == 0) {
+ if (func) {
+ x1 = func(
+ i,
+ checkmz(
+
atoi(
+
web100_value_to_text(
+
web100_get_var_type(
+
var), buf))));
+ } else {
+ x1 = checkmz(
+ atoi(
+
web100_value_to_text(
+
web100_get_var_type(var),
+
buf)));
+ }
+ } else {
+ x1 = x2;
+ }
+ } else {
+ if (first == 0) {
+ if (func) {
+ y1[i - 1] = func(
+ i,
+ checkmz(
+
atoi(
+
web100_value_to_text(
+
web100_get_var_type(
+
var), buf))));
+ } else {
+ y1[i - 1] = checkmz(
+ atoi(
+
web100_value_to_text(
+
web100_get_var_type(var),
+
buf)));
+ }
+ } else {
+ y1[i - 1] = y2[i - 1];
+ }
+ }
+ varg = strtok(NULL, ",");
+ }
+
+ first++;
+ strncpy(varlist, list, strlen(list) + 1);
+ varg = strtok(varlist, ",");
+ for (i = 0; i < cnt; i++) {
+ if ((web100_agent_find_var_and_group(agent, varg, &group,
&var))
+ != WEB100_ERR_SUCCESS) {
+
web100_perror("web100_agent_find_var_and_group");
+ exit(EXIT_FAILURE);
+ }
+
+ if ((web100_snap_read(var, snap, buf)) !=
WEB100_ERR_SUCCESS) {
+ web100_perror("web100_snap_read");
+ exit(EXIT_FAILURE);
+ }
+
+ if (i == 0) {
+ if (func) {
+ x2 = func(
+ i,
+ checkmz(
+ atoi(
+
web100_value_to_text(
+
web100_get_var_type(var),
+
buf))));
+ } else {
+ x2 = checkmz(
+ atoi(
+
web100_value_to_text(
+
web100_get_var_type(var), buf)));
+ }
+ } else {
+ if (func) {
+ y2[i - 1] = func(
+ i,
+ checkmz(
+ atoi(
+
web100_value_to_text(
+
web100_get_var_type(var),
+
buf))));
+ } else {
+ y2[i - 1] = checkmz(
+ atoi(
+
web100_value_to_text(
+
web100_get_var_type(var), buf)));
+ }
+ fprintf(fn, "%s\nline %0.4f %0.4f %0.4f
%0.4f\n", color[i - 1],
+ x1 / 1000000, y1[i - 1] /
1024, x2 / 1000000,
+ y2[i - 1] / 1024);
+ }
+ varg = strtok(NULL, ",");
+ }
+ }
+ fprintf(fn, "go\n");

}

-void
-plot_cwndtime(char *name, web100_snapshot* snap,
- web100_log* log, web100_agent* agent, web100_group* group)
-{
- double SndLimTimeRwin = 0, SndLimTimeSender = 0;
- char buf[256];
- web100_var* var;
- char lname[256], remport[8];
- char title[256];
- char* variables[] = {"Duration", "SndLimTimeRwin", "SndLimTimeSender", "SndLimTimeCwnd"};
- int i, first=0;
- double x1, x2, y1, y2;
- FILE *fn;
-
- memset(lname, 0, 256);
-
- get_title(snap, log, agent, group, title, remport);
-
- if (name == NULL) {
- fn = stdout;
- strncpy(name, "Unknown", 7);
- } else {
- strncpy(lname, name, strlen(name));
- strcat(lname, ".");
- strcat(lname, remport);
- strcat(lname, ".xpl");
- fn = fopen(lname, "w");
- }
-
- fprintf(fn, "double double\ntitle\n");
- fprintf(fn, "%s:%s (%s)\n", title, remport, name);
- fprintf(fn, "xlabel\nTime\nylabel\nPercentage\n");
-
- x1 = x2 = y1 = y2 = 0;
- first = 0;
-
- for (;;) {
- if (first != 0) {
- if ((web100_snap_from_log(snap, log)) != WEB100_ERR_SUCCESS) {
- fprintf(fn, "go\n");
- return;
- }
- }
- for (i=0; i<4; i++) {
- if ((web100_agent_find_var_and_group(agent, variables[i], &group, &var)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_agent_find_var_and_group");
- exit(EXIT_FAILURE);
- }
-
- if ((web100_snap_read(var, snap, buf)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_snap_read");
- exit(EXIT_FAILURE);
- }
-
- if (i == 0) {
- if (first == 0) {
- x1 = atoi(web100_value_to_text(web100_get_var_type(var), buf));
- } else {
- x1 = x2;
- }
- }
- else if (i == 1) {
- if (first == 0) {
- SndLimTimeRwin = atoi(web100_value_to_text(web100_get_var_type(var), buf));
- }
- }
- else if (i == 2) {
- if (first == 0) {
- SndLimTimeSender = atoi(web100_value_to_text(web100_get_var_type(var), buf));
- }
- }
- else {
- if (first == 0) {
- y1 = atoi(web100_value_to_text(web100_get_var_type(var), buf));
- y1 = y1 / (SndLimTimeRwin + SndLimTimeSender + y1);
- }
- else {
- y1 = y2;
- }
- }
- }
-
- first++;
- for (i=0; i<4; i++) {
- if ((web100_agent_find_var_and_group(agent, variables[i], &group, &var)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_agent_find_var_and_group");
- exit(EXIT_FAILURE);
- }
-
- if ((web100_snap_read(var, snap, buf)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_snap_read");
- exit(EXIT_FAILURE);
- }
-
- if (i == 0) {
- x2 = atoi(web100_value_to_text(web100_get_var_type(var), buf));
- }
- else if (i == 1) {
- SndLimTimeRwin = atoi(web100_value_to_text(web100_get_var_type(var), buf));
- }
- else if (i == 2) {
- SndLimTimeSender = atoi(web100_value_to_text(web100_get_var_type(var), buf));
- }
- else {
- y2 = atoi(web100_value_to_text(web100_get_var_type(var), buf));
- y2 = y2 / (SndLimTimeRwin + SndLimTimeSender + y2);
- fprintf(fn, "%s\nline %0.4f %0.4f %0.4f %0.4f\n", color[i-1], x1/1000000, y1,
- x2/1000000, y2);
- }
- }
- }
- fprintf(fn, "go\n");
+void plot_cwndtime(char *name, web100_snapshot* snap, web100_log* log,
+ web100_agent* agent, web100_group* group) {
+ double SndLimTimeRwin = 0, SndLimTimeSender = 0;
+ char buf[256];
+ web100_var* var;
+ char lname[256], remport[8];
+ char title[256];
+ char* variables[] = { "Duration", "SndLimTimeRwin",
"SndLimTimeSender",
+ "SndLimTimeCwnd" };
+ int i, first = 0;
+ double x1, x2, y1, y2;
+ FILE *fn;
+
+ memset(lname, 0, 256);
+
+ get_title(snap, log, agent, group, title, remport);
+
+ if (name == NULL) {
+ fn = stdout;
+ strncpy(name, "Unknown", 7);
+ } else {
+ strncpy(lname, name, strlen(name));
+ strcat(lname, ".");
+ strcat(lname, remport);
+ strcat(lname, ".xpl");
+ fn = fopen(lname, "w");
+ }
+
+ fprintf(fn, "double double\ntitle\n");
+ fprintf(fn, "%s:%s (%s)\n", title, remport, name);
+ fprintf(fn, "xlabel\nTime\nylabel\nPercentage\n");
+
+ x1 = x2 = y1 = y2 = 0;
+ first = 0;
+
+ for (;;) {
+ if (first != 0) {
+ if ((web100_snap_from_log(snap, log)) !=
WEB100_ERR_SUCCESS) {
+ fprintf(fn, "go\n");
+ return;
+ }
+ }
+ for (i = 0; i < 4; i++) {
+ if ((web100_agent_find_var_and_group(agent, variables[i],
&group,
+ &var)) != WEB100_ERR_SUCCESS) {
+
web100_perror("web100_agent_find_var_and_group");
+ exit(EXIT_FAILURE);
+ }
+
+ if ((web100_snap_read(var, snap, buf)) !=
WEB100_ERR_SUCCESS) {
+ web100_perror("web100_snap_read");
+ exit(EXIT_FAILURE);
+ }
+
+ if (i == 0) {
+ if (first == 0) {
+ x1 = atoi(
+
web100_value_to_text(web100_get_var_type(var),
+ buf));
+ } else {
+ x1 = x2;
+ }
+ } else if (i == 1) {
+ if (first == 0) {
+ SndLimTimeRwin = atoi(
+
web100_value_to_text(web100_get_var_type(var),
+ buf));
+ }
+ } else if (i == 2) {
+ if (first == 0) {
+ SndLimTimeSender = atoi(
+
web100_value_to_text(web100_get_var_type(var),
+ buf));
+ }
+ } else {
+ if (first == 0) {
+ y1 = atoi(
+
web100_value_to_text(web100_get_var_type(var),
+ buf));
+ y1 = y1 / (SndLimTimeRwin +
SndLimTimeSender + y1);
+ } else {
+ y1 = y2;
+ }
+ }
+ }
+
+ first++;
+ for (i = 0; i < 4; i++) {
+ if ((web100_agent_find_var_and_group(agent, variables[i],
&group,
+ &var)) != WEB100_ERR_SUCCESS) {
+
web100_perror("web100_agent_find_var_and_group");
+ exit(EXIT_FAILURE);
+ }
+
+ if ((web100_snap_read(var, snap, buf)) !=
WEB100_ERR_SUCCESS) {
+ web100_perror("web100_snap_read");
+ exit(EXIT_FAILURE);
+ }
+
+ if (i == 0) {
+ x2 =
atoi(web100_value_to_text(web100_get_var_type(var), buf));
+ } else if (i == 1) {
+ SndLimTimeRwin = atoi(
+
web100_value_to_text(web100_get_var_type(var), buf));
+ } else if (i == 2) {
+ SndLimTimeSender = atoi(
+
web100_value_to_text(web100_get_var_type(var), buf));
+ } else {
+ y2 =
atoi(web100_value_to_text(web100_get_var_type(var), buf));
+ y2 = y2 / (SndLimTimeRwin + SndLimTimeSender
+ y2);
+ fprintf(fn, "%s\nline %0.4f %0.4f %0.4f
%0.4f\n", color[i - 1],
+ x1 / 1000000, y1, x2 /
1000000, y2);
+ }
+ }
+ }
+ fprintf(fn, "go\n");

}

-void
-print_var(char *varlist, web100_snapshot* snap, web100_log* log,
- web100_agent* agent, web100_group* group, void(*func)(const int arg, const int value))
-{
-
- char *varg, savelist[256], *text;
- char buf[256], title[256], remport[8];
- int i, j;
- web100_var* var;
- FILE* fn;
-
- fn = stdout;
- get_title(snap, log, agent, group, title, remport);
- fprintf(fn, "Extracting Data from %s:%s connection\n\n", title, remport);
-
- strncpy(savelist, varlist, strlen(varlist)+1);
- printf("Index\t");
- varg = strtok(varlist, ",");
- for (j=0; ;j++) {
- if (varg == NULL)
- break;
- if (func) {
- func(-1, j);
- }
- else {
- printf("%10s\t", varg);
- }
- varg = strtok(NULL, ",");
- }
- printf("\n");
- for (i=0; ; i++) {
- if ((web100_snap_from_log(snap, log)) != WEB100_ERR_SUCCESS) {
- /* web100_perror("web100_log_open_read"); */
- printf("-------------- End Of Data --------------\n\n");
- return;
- }
- printf("%5d\t", i);
-
- strncpy(varlist, savelist, strlen(savelist)+1);
- varg=strtok(varlist, ",");
- for (j=0; ; j++) {
- if (varg == NULL)
- break;
- if ((web100_agent_find_var_and_group(agent, varg, &group, &var)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_agent_find_var_and_group");
- exit(EXIT_FAILURE);
- }
-
- if ((web100_snap_read(var, snap, buf)) != WEB100_ERR_SUCCESS) {
- web100_perror("web100_snap_read");
- exit(EXIT_FAILURE);
- }
- if (func) {
- func(j, atoi(web100_value_to_text(web100_get_var_type(var), buf)));
- }
- else {
- text = web100_value_to_text(web100_get_var_type(var), buf);
- if (strcmp(text, "4294966376") == 0) {
- printf("%10s\t", "-1");
- }
- else {
- printf("%10s\t", text);
- }
- }
- varg = strtok(NULL, ",");
- }
- printf("\n");
- }
+void print_var(char *varlist, web100_snapshot* snap, web100_log* log,
+ web100_agent* agent, web100_group* group,
+ void(*func)(const int arg, const int value)) {
+
+ char *varg, savelist[256], *text;
+ char buf[256], title[256], remport[8];
+ int i, j;
+ web100_var* var;
+ FILE* fn;
+
+ fn = stdout;
+ get_title(snap, log, agent, group, title, remport);
+ fprintf(fn, "Extracting Data from %s:%s connection\n\n", title,
remport);
+
+ strncpy(savelist, varlist, strlen(varlist) + 1);
+ printf("Index\t");
+ varg = strtok(varlist, ",");
+ for (j = 0;; j++) {
+ if (varg == NULL)
+ break;
+ if (func) {
+ func(-1, j);
+ } else {
+ printf("%10s\t", varg);
+ }
+ varg = strtok(NULL, ",");
+ }
+ printf("\n");
+ for (i = 0;; i++) {
+ if ((web100_snap_from_log(snap, log)) != WEB100_ERR_SUCCESS) {
+ /* web100_perror("web100_log_open_read"); */
+ printf("-------------- End Of Data
--------------\n\n");
+ return;
+ }
+ printf("%5d\t", i);
+
+ strncpy(varlist, savelist, strlen(savelist) + 1);
+ varg = strtok(varlist, ",");
+ for (j = 0;; j++) {
+ if (varg == NULL)
+ break;
+ if ((web100_agent_find_var_and_group(agent, varg, &group,
&var))
+ != WEB100_ERR_SUCCESS) {
+
web100_perror("web100_agent_find_var_and_group");
+ exit(EXIT_FAILURE);
+ }
+
+ if ((web100_snap_read(var, snap, buf)) !=
WEB100_ERR_SUCCESS) {
+ web100_perror("web100_snap_read");
+ exit(EXIT_FAILURE);
+ }
+ if (func) {
+ func(
+ j,
+ atoi(
+
web100_value_to_text(web100_get_var_type(var),
+
buf)));
+ } else {
+ text =
web100_value_to_text(web100_get_var_type(var), buf);
+ if (strcmp(text, "4294966376") == 0) {
+ printf("%10s\t", "-1");
+ } else {
+ printf("%10s\t", text);
+ }
+ }
+ varg = strtok(NULL, ",");
+ }
+ printf("\n");
+ }

}

/* workers */
-void
-throughput(const int arg, const int value)
-{
- static int duration;
-
- if (arg == -1) {
- if (value) {
- printf("%10s\t", "Throughput (kB/s)");
- }
- else {
- printf("%10s\t", "Duration");
- }
- return;
- }
-
- if (!arg) { /* duration */
- duration = value;
- printf("%10d\t", value);
- }
- else { /* DataBytesOut */
- printf("%10.2f", ((8*((double) value)) / ((double) duration)) * 1000000.0 / 1024.0 / 1024.0);
- }
+void throughput(const int arg, const int value) {
+ static int duration;
+
+ if (arg == -1) {
+ if (value) {
+ printf("%10s\t", "Throughput (kB/s)");
+ } else {
+ printf("%10s\t", "Duration");
+ }
+ return;
+ }
+
+ if (!arg) { /* duration */
+ duration = value;
+ printf("%10d\t", value);
+ } else { /* DataBytesOut */
+ printf(
+ "%10.2f",
+ ((8 * ((double) value)) / ((double)
duration)) * 1000000.0
+ / 1024.0 / 1024.0);
+ }
}

-int
-throughputPlot(const int arg, const int value)
-{
- static int duration;
-
- if (!arg) { /* duration */
- duration = value;
- return value;
- }
- else { /* DataBytesOut */
- return (((double) value) / ((double) duration)) * 1000000.0;
- }
+int throughputPlot(const int arg, const int value) {
+ static int duration;
+
+ if (!arg) { /* duration */
+ duration = value;
+ return value;
+ } else { /* DataBytesOut */
+ return (((double) value) / ((double) duration)) * 1000000.0;
+ }
}

-void
-cwndtime(const int arg, const int value)
-{
- static int SndLimTimeRwin, SndLimTimeSender;
-
- if (arg == -1) {
- if (value == 0) {
- printf("%10s\t", "Duration");
- }
- else if (value == 3) {
- printf("%10s\t", "CwndTime (%% of total time)");
- }
- return;
- }
-
- if (arg == 0) { /* duration */
- printf("%10d\t", value);
- }
- else if (arg == 1) { /* SndLimTimeRwin */
- SndLimTimeRwin = value;
- }
- else if (arg == 2) { /* SndLimTimeSender */
- SndLimTimeSender = value;
- }
- else { /* SndLimTimeCwnd */
- printf("%10.2f", ((double) value) /
- (((double) SndLimTimeRwin) + ((double) SndLimTimeSender) + ((double) value)));
- }
+void cwndtime(const int arg, const int value) {
+ static int SndLimTimeRwin, SndLimTimeSender;
+
+ if (arg == -1) {
+ if (value == 0) {
+ printf("%10s\t", "Duration");
+ } else if (value == 3) {
+ printf("%10s\t", "CwndTime (%% of total time)");
+ }
+ return;
+ }
+
+ if (arg == 0) { /* duration */
+ printf("%10d\t", value);
+ } else if (arg == 1) { /* SndLimTimeRwin */
+ SndLimTimeRwin = value;
+ } else if (arg == 2) { /* SndLimTimeSender */
+ SndLimTimeSender = value;
+ } else { /* SndLimTimeCwnd */
+ printf(
+ "%10.2f",
+ ((double) value)
+ / (((double) SndLimTimeRwin)
+ + ((double)
SndLimTimeSender) + ((double) value)));
+ }
}

/* --- */

-int
-main(int argc, char** argv)
-{
- web100_agent* agent;
- web100_connection* conn;
- web100_group* group;
- web100_log* log;
- web100_snapshot* snap;
- char fn[128];
- char *varlist=NULL, list[1024];
- char *varg;
- int j, c, plotspd = 0, plotuser = 0;
- int plotboth = 0, plotcwnd = 0, plotrwin = 0;
- int plotcwndtime = 0;
- int k, txt = 0;
-
- while ((c = getopt_long(argc, argv, "hCScRbtm:v", long_options, 0)) != -1) {
- switch (c) {
- case 'b':
- plotboth = 1;
- break;
- case 'h':
- genplot_long_usage("ANL/Internet2 NDT version " VERSION " (genplot)", argv[0]);
- break;
- case 'v':
- printf("ANL/Internet2 NDT version %s (genplot)\n", VERSION);
- exit(0);
- break;
- case 't':
- txt = 1;
- break;
- case 'C':
- plotcwnd = 1;
- break;
- case 'R':
- plotrwin = 1;
- break;
- case 'S':
- plotspd = 1;
- break;
- case 'c':
- plotcwndtime = 1;
- break;
- case 'm':
- varlist = optarg;
- plotuser = 1;
- break;
- }
- }
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/src/logging.c Fri Aug 5 11:15:06 2011
+++ /trunk/src/logging.c Mon Apr 30 13:46:39 2012
@@ -1,4 +1,4 @@
-/*
+/**
* This file contains the functions of the logging system.
*
* Jakub S�awi�ski 2006-06-14
@@ -20,544 +20,1183 @@
/* #endif */

#include "logging.h"
-
-static int _debuglevel = 0;
-static char* _programname = "";
-static char* LogFileName = BASEDIR"/"LOGFILE;
-static I2ErrHandle _errorhandler_nl = NULL;
-static I2ErrHandle _errorhandler = NULL;
+#include "testoptions.h"
+#include "strlutils.h"
+#include "utils.h"
+#include "protocol.h"
+
+static int _debuglevel = 0;
+static char* _programname = "";
+static char* LogFileName = BASEDIR"/"LOGFILE;
+static char ProtocolLogFileName[FILENAME_SIZE] = BASEDIR"/"PROTOLOGFILE;
+static char* ProtocolLogDirName = BASEDIR"/"LOGDIR;
+static char protocollogfilestore[FILENAME_SIZE];
+static char enableprotologging = 0;
+static I2ErrHandle _errorhandler_nl = NULL;
+static I2ErrHandle _errorhandler = NULL;
static I2LogImmediateAttr _immediateattr_nl;
static I2LogImmediateAttr _immediateattr;
-static time_t timestamp;
-static long int utimestamp;
-
-/* #ifdef HAVE_ZLIB_H */
-/* Compress snaplog, tcpdump, and cputime files to save disk space. These files compress by 2 to 3 orders of
- * magnitude (100 - 1000 times). This can save a lot of disk space. 9/9/09 RAC
+static time_t timestamp;
+static long int utimestamp;
+
+/**
+ * Compress snaplog, tcpdump, and cputime files to save disk space.
+ * These files compress by 2 to 3 orders of
+ * magnitude (100 - 1000 times). This can save a lot of disk space.
+ * 9/9/09 RAC
+ *
+ * @param pointer to string containing the source file name
+ * @return integer 0 on success, error code on failure
+ * Possible error codes are:
+ * -3: Failure to open source file for reading
+ * -4: Failure to open destination file for writing
+ * -1: Z_ERRNO as defined by zlib library
+ * other error codes as defined by zlib's deflateInit(0 method:
+ * Z_MEM_ERROR if there was not enough memory,
+ * Z_STREAM_ERROR if level is not a valid compression level,
+ * Z_VERSION_ERROR if the zlib library version (zlib_version)
+ * is incompatible with the version assumed by the caller (ZLIB_VERSION)
+ *
*/

int zlib_def(char *src_fn) {

- int ret, flush, level=Z_DEFAULT_COMPRESSION;
- char dest_fn[256];
- FILE *dest, *source;
- unsigned have;
- z_stream strm;
- unsigned char in[16384];
- unsigned char out[16384];
-
- /* allocate deflate state */
- strm.zalloc = Z_NULL;
- strm.zfree = Z_NULL;
- strm.opaque = Z_NULL;
- ret = deflateInit(&strm, level);
- if (ret != Z_OK) {
- log_println(6, "zlib deflateInit routine failed with %d", ret);
- return ret;
- }
-
- sprintf(dest_fn, "%s.gz", src_fn);
- if ((source = fopen(src_fn, "r")) == NULL) {
- log_println(6, "zlib_def(): failed to open src file '%s' for reading", src_fn);
- return -3;
- }
- if ((dest = fopen(dest_fn, "w")) == NULL) {
- log_println(6, "zlib_def(): failed to open dest file '%s' for writing", dest_fn);
- return -4;
- }
- /* compress until end of file */
- do {
- strm.avail_in = fread(in, 1, 16384, source);
- if (ferror(source)) {
- (void)deflateEnd(&strm);
- return Z_ERRNO;
- }
- flush = feof(source) ? Z_FINISH : Z_NO_FLUSH;
- strm.next_in = in;
-
- /* run deflate() on input until output buffer not full, finish
- * compression if all of source has been read in */
- do {
- strm.avail_out = 16384;
- strm.next_out = out;
-
- ret = deflate(&strm, flush); /* no bad return value */
- assert(ret != Z_STREAM_ERROR); /* state not clobbered */
- have = 16384 - strm.avail_out;
- if (fwrite(out, 1, have, dest) != have || ferror(dest)) {
- (void)deflateEnd(&strm);
- return Z_ERRNO;
- }
-
- } while (strm.avail_out == 0);
- assert(strm.avail_in == 0); /* all input will be used */
-
- /* done when last data in file processed */
- } while (flush != Z_FINISH);
- assert(ret == Z_STREAM_END); /* stream will be complete */
-
- /* clean up and return */
- (void)deflateEnd(&strm);
-
- /* compressed version of file is now created, remove the original uncompressed version */
- remove(src_fn);
-
- return Z_OK;
+ int ret, flush, level = Z_DEFAULT_COMPRESSION;
+ char dest_fn[256];
+ FILE *dest, *source;
+ unsigned have;
+ z_stream strm;
+ unsigned char in[16384];
+ unsigned char out[16384];
+
+ // allocate deflate state
+ strm.zalloc = Z_NULL;
+ strm.zfree = Z_NULL;
+ strm.opaque = Z_NULL;
+ ret = deflateInit(&strm, level);
+ if (ret != Z_OK) {
+ log_println(6, "zlib deflateInit routine failed with %d",
ret);
+ return ret;
+ }
+
+ sprintf(dest_fn, "%s.gz", src_fn);
+ if ((source = fopen(src_fn, "r")) == NULL) {
+ log_println(6, "zlib_def(): failed to open src file '%s' for
reading",
+ src_fn);
+ return -3;
+ }
+ if ((dest = fopen(dest_fn, "w")) == NULL) {
+ log_println(6, "zlib_def(): failed to open dest file '%s' for
writing",
+ dest_fn);
+ return -4;
+ }
+ // compress until end of file
+ do {
+ strm.avail_in = fread(in, 1, 16384, source);
+ if (ferror(source)) {
+ (void) deflateEnd(&strm);
+ return Z_ERRNO;
+ }
+ flush = feof(source) ? Z_FINISH : Z_NO_FLUSH;
+ strm.next_in = in;
+
+ // run deflate() on input until output buffer not full, finish
+ // compression if all of source has been read in
+ do {
+ strm.avail_out = 16384;
+ strm.next_out = out;
+
+ ret = deflate(&strm, flush); /* no bad return value */
+ assert(ret != Z_STREAM_ERROR); /* state not clobbered
*/
+ have = 16384 - strm.avail_out;
+ if (fwrite(out, 1, have, dest) != have ||
ferror(dest)) {
+ (void) deflateEnd(&strm);
+ return Z_ERRNO;
+ }
+
+ } while (strm.avail_out == 0);
+ assert(strm.avail_in == 0); /* all input will be used */
+
+ /* done when last data in file processed */
+ } while (flush != Z_FINISH);
+ assert(ret == Z_STREAM_END); /* stream will be complete */
+
+ /* clean up and return */
+ (void) deflateEnd(&strm);
+
+ /* compressed version of file is now created, remove the original uncompressed version */
+ remove(src_fn);
+
+ return Z_OK;
}
/* #endif */

-/*
- * Function name: log_init
- * Description: Initializes the logging system.
- * Arguments: progname - the name of the program
- * debuglvl - the debug level
+/**
+ * Initialize the logging system.
+ * @param progname The name of the program
+ * @param debuglvl The debug level
*/

-void
-log_init(char* progname, int debuglvl)
-{
- assert(progname);
-
- _programname = (_programname = strrchr(progname,'/')) ? _programname+1 : progname;
-
- _immediateattr.fp = _immediateattr_nl.fp = stderr;
- _immediateattr.line_info = I2MSG | I2NONL;
- _immediateattr_nl.line_info = I2MSG;
- _immediateattr.tformat = _immediateattr_nl.tformat = NULL;
-
- _errorhandler = I2ErrOpen(progname, I2ErrLogImmediate, &_immediateattr, NULL, NULL);
- _errorhandler_nl = I2ErrOpen(progname, I2ErrLogImmediate, &_immediateattr_nl, NULL, NULL);
-
- if (!_errorhandler || !_errorhandler_nl) {
- fprintf(stderr, "%s : Couldn't init error module\n", progname);
- exit(1);
- }
-
- _debuglevel = debuglvl;
+void log_init(char* progname, int debuglvl) {
+ assert(progname);
+
+ _programname =
+ (_programname = strrchr(progname, '/')) ?
+ _programname + 1 : progname;
+
+ _immediateattr.fp = _immediateattr_nl.fp = stderr;
+ _immediateattr.line_info = I2MSG | I2NONL;
+ _immediateattr_nl.line_info = I2MSG;
+ _immediateattr.tformat = _immediateattr_nl.tformat = NULL;
+
+ _errorhandler = I2ErrOpen(progname, I2ErrLogImmediate,
&_immediateattr,
+ NULL, NULL);
+ _errorhandler_nl = I2ErrOpen(progname, I2ErrLogImmediate,
+ &_immediateattr_nl, NULL, NULL);
+
+ if (!_errorhandler || !_errorhandler_nl) {
+ fprintf(stderr, "%s : Couldn't init error module\n",
progname);
+ exit(1);
+ }
+
+ _debuglevel = debuglvl;
}

-/*
- * Function name: log_free
- * Description: Free malloc'ed memmory after child process ends. Allocation without
+/**
+ * Free malloc'ed memmory after child process ends. Allocation without
* a corresponding free() causes a memory leak, and the main process never ends so
* memory is not free'ed on a close.
- * Arguments: none
* Added RAC 10/13/09
*/
-
-void
-log_free(void)
-{
- free(_errorhandler);
- free(_errorhandler_nl);
+void log_free(void) {
+ free(_errorhandler);
+ free(_errorhandler_nl);
+}
+
+/**
+ * Set the debug level to the given value.
+ * @param debuglvl new debug level to use
+ */
+
+void set_debuglvl(int debuglvl) {
+ _debuglevel = debuglvl;
}

-/*
- * Function name: set_debuglvl
- * Description: Sets the debug level to the given value.
- * Arguments: debuglvl - the new debug level
+/**
+ * Set the log filename.
+ * @param new log filename
*/

-void
-set_debuglvl(int debuglvl)
-{
- _debuglevel = debuglvl;
+void set_logfile(char* filename) {
+ LogFileName = filename;
}

-/*
- * Function name: set_logfile
- * Description: Sets the log filename.
- * Arguments: filename - new log filename
+/**
+ * Set the protocol log directory. The log directory is accepted as
+ * a command line argument using the -u option.
+ * @param filename The new protocol log filename
+ *
*/
-
-void
-set_logfile(char* filename)
-{
- LogFileName = filename;
+void set_protologdir(char* dirname) {
+ char * localstr[256];
+
+ // Protocol log location being set
+ if (dirname == NULL) {
+ //use default of BASEDIR/LOGDIR
+ log_println(5, "PV: 1: NULL proto location =%s;\n",
ProtocolLogDirName);
+ return;
+ } else if (dirname[0] != '/') {
+ sprintf(localstr, "%s/%s/", BASEDIR, dirname);
+ ProtocolLogDirName = localstr;
+ log_println(5, "PV: 2: non-dir proto location. So=%s;\n",
dirname);
+ } //end protocol dir name
+ else {
+ sprintf(localstr, "%s", dirname);
+ ProtocolLogDirName = dirname;
+ log_println(5, "PV33: proto location=%s;\n",
ProtocolLogDirName);
+ }
+
}

+/**
+ * Get the directory where the protocol log will be placed
+ * @return directory where protocol logs are placed
+ */
+char* get_protologdir() {
+ printf("PV34: proto location=%s;\n", ProtocolLogDirName);
+ return ProtocolLogDirName;
+}
+
+/**
+ * This method is no longer needed since the protocol log file name
+ * includes client+server name, and is constructed on the fly.
+ * Sets the protocol log filename.
+ * @param filename The new protocol log filename
+ * */
/*
- * Function name: get_debuglvl
- * Description: Returns the current debug level.
- * Returns: The current debug level
+void set_protologfile(char* client_ip, char* protologlocalarr) {
+ FILE * fp;
+
+ if (ProtocolLogDirName == NULL) {
+ ProtocolLogDirName = BASEDIR;
+ }
+ sprintf(protologlocalarr, "%s/%s%s%s%s", ProtocolLogDirName, PROTOLOGPREFIX,
+ client_ip, PROTOLOGSUFFIX, "\0");
+ //strlcpy(ProtocolLogFileName, protologlocalarr, sizeof(ProtocolLogFileName));
+ strlcpy(protologlocalarr,ProtocolLogDirName,sizeof(protologlocalarr));
+ strlcat(protologlocalarr,"/",sizeof(protologlocalarr));
+ strlcat(protologlocalarr,PROTOLOGPREFIX,sizeof(protologlocalarr));
+ strlcat(protologlocalarr,client_ip,sizeof(protologlocalarr));
+ strlcat(protologlocalarr,PROTOLOGSUFFIX,sizeof(protologlocalarr));
+
+ strlcpy(ProtocolLogFileName, protologlocalarr, sizeof(ProtocolLogFileName));
+
+ log_println(0, "Protocol filename: %s: %s\n", ProtocolLogFileName,
+ ProtocolLogDirName);
+
+}
*/

-int
-get_debuglvl()
-{
- return _debuglevel;
+/**
+ * Return the protocol validation log filename.
+ * The protocol log filename contains the local and remote address
+ * of the test, and is uniform across server and client.
+ * @return The protocol log filename
+ */
+
+char*
+get_protologfile(int socketNum, char *protologfilename) {
+ char localAddr[64]="", remoteAddr[64]="";
+ size_t tmpstrlen = sizeof(localAddr);
+ memset(localAddr, 0, tmpstrlen);
+ memset(remoteAddr, 0, tmpstrlen);
+
+ // get remote address
+ I2Addr tmp_addr =
+ I2AddrBySockFD(get_errhandle(), socketNum, False);
+ I2AddrNodeName(tmp_addr, remoteAddr, &tmpstrlen); //client name
+
+ // get local address
+ tmp_addr = I2AddrByLocalSockFD(get_errhandle(), socketNum, False);
+
+ I2AddrNodeName(tmp_addr, localAddr, &tmpstrlen);
+
+ // copy address into filename String
+ sprintf(protologfilename, "%s/%s%s%s%s%s%s", ProtocolLogDirName, PROTOLOGPREFIX,
+ localAddr, "_",remoteAddr, PROTOLOGSUFFIX, "\0");
+ //log_print(0, "Log file name ---%s---", protologfilename);
+
+ return protologfilename;
}

-/*
- * Function name: get_logfile
- * Description: Returns the log filename.
- * Returns: The log filename
+/**
+ * Return the current debug level.
+ * @return current debug level
*/

+int get_debuglvl() {
+ return _debuglevel;
+}
+
+/**
+ * Return the log filename.
+ * @return The log filename
+ */
+
char*
-get_logfile()
-{
- return LogFileName;
+get_logfile() {
+ return LogFileName;
}

-/*
- * Function name: get_errhandle
- * Description: Returns the error handle, that writes the messages
+/**
+ * Return the error handle, that writes the messages
* with the new line.
- * Returns: The error handle
+ * @return The error handle
*/

-I2ErrHandle
-get_errhandle()
-{
- return _errorhandler_nl;
+I2ErrHandle get_errhandle() {
+ return _errorhandler_nl;
}

-/*
- * Function name: ndt_print
- * Description: Logs the message with the given lvl.
- * Arguments: lvl - the level of the message
- * format - the format of the message
+/**
+ * Logs the message with the given level.
+ * @param lvl level of the message
+ * @param format format of the message
* ... - the additional arguments
*/

-void
-log_print(int lvl, const char* format, ...)
-{
- va_list ap;
-
- if (lvl > _debuglevel) {
- return;
- }
-
- va_start(ap, format);
- I2ErrLogVT(_errorhandler,-1,0,format,ap);
- va_end(ap);
+void log_print(int lvl, const char* format, ...)
+{
+ va_list ap;
+
+ if (lvl > _debuglevel) {
+ return;
+ }
+
+ va_start(ap, format);
+ I2ErrLogVT(_errorhandler,-1,0,format,ap);
+ va_end(ap);
}

-/*
- * Function name: ndt_println
- * Description: Logs the message with the given lvl. New line character
+/**
+ * Log the message with the given level. New line character
* is appended to the error stream.
- * Arguments: lvl - the level of the message
- * format - the format of the message
+ * @param lvl level of the message
+ * @param format format of the message
* ... - the additional arguments
*/

-void
-log_println(int lvl, const char* format, ...)
-{
- va_list ap;
-
- if (lvl > _debuglevel) {
- return;
- }
-
- va_start(ap, format);
- I2ErrLogVT(_errorhandler_nl,-1,0,format,ap);
- va_end(ap);
+void log_println(int lvl, const char* format, ...)
+{
+ va_list ap;
+
+ if (lvl > _debuglevel) {
+ return;
+ }
+
+ va_start(ap, format);
+ I2ErrLogVT(_errorhandler_nl,-1,0,format,ap);
+ va_end(ap);
}

/**
- * Function name: set_timestamp
- * Description: Sets the timestamp to actual time.
+ * Method to replace certain characters in received messages with ones that are quoted, so that
+ * the content is explicitly legible.
+ *
+ * @param line string containing characters to be replaced
+ * @param line_size length of the string to be replaced
+ * @param output_buf output buffer
+ * @param output_buf_size size of buffer to write output to
+ * @return number or characters written to the output buffer
+ * */
+
+int quote_delimiters(char *line, int line_size, char *output_buf,
+ int output_buf_size) {
+ static quoted[4][2] = { { '\n', 'n' }, { '"', '"' }, { '\0', '0' }, { '\\',
+ '\\' }, };
+ char quote_char = '\\';
+
+ int i, j, k;
+ int match;
+
+ for (i = j = 0; i < line_size && j < output_buf_size - 1; i++) {
+ // find any matching characters among the quoted
+ int match = 0;
+ for (k = 0; k < 4; k++) {
+ if (line[i] == quoted[k][0]) {
+ output_buf[j] = quote_char;
+ output_buf[j + 1] = quoted[k][1];
+ j += 2;
+ match = 1;
+ break;
+ }
+ }
+
+ if (match == 0) {
+ output_buf[j] = line[i];
+ j++;
+ }
+ }
+
+ output_buf[j] = '\0'; // make sure it's null-terminated
+ log_println(8, "****Received=%s; len=%d; dest=%d; MSG=%s", line, line_size,
+ output_buf_size, output_buf);
+
+ return j - 1;
+}
+
+/**
+ * Log in a single key-value pair as a particular event
+ *
+ * In future, based on need, this may be expanded to log
+ * in a list of key-value pairs
+ * @param key string key
+ * @param value string value associated with this key
+ * @param socketnum Socket fd
*/
-void
-set_timestamp()
-{
- struct timeval tv;
-
- gettimeofday(&tv, NULL);
- timestamp = tv.tv_sec;
- utimestamp = tv.tv_usec;
-
-/* Changed function to use gettimeofday() need usec value for ISO8601 file names
- * RAC 5/6/09
- * timestamp = time(NULL);
+void protolog_printgeneric(const char* key, const char* value, int socketnum) {
+ FILE * fp;
+ char isotime[64];
+
+ char logmessage[4096]; /* 4096 is just a random default buffer size for the protocol message
+ Ideally, twice the messsage size will suffice */
+ char tmplogname[FILENAME_SIZE];
+
+ if (!enableprotologging) {
+ log_println(5, "Protocol logging is not enabled");
+ return;
+ }
+
+ // make delimiters in message payload explicit
+ quote_delimiters(value, strlen(value), logmessage,
sizeof(logmessage));
+
+ fp = fopen(get_protologfile(socketnum, tmplogname), "a");
+ if (fp == NULL) {
+ log_println(5,
+ "--Unable to open proto file while trying to
record msg: %s \n",
+ key, value);
+ } else {
+ fprintf(fp, " event=\"%s\", name=\"%s\", time=\"%s\"\n", key,
value,
+ get_currenttime(isotime, sizeof(isotime)));
+ fclose(fp);
+ }
+}
+
+/**
+ * Logs a protocol message specifically indicating the start/end or other status of tests.
+ *
+ * @param lvl Level of the message
+ * @param testid enumerator indicating name of the test @see TEST_ID
+ * @param pid PID of process
+ * @param teststatus enumerator indicating test status. @see TEST_STATUS_INT
+ * @param socketnum Socket fd
+ *
*/
-
+void protolog_status(int pid, enum TEST_ID testid,
+ enum TEST_STATUS_INT teststatus, int socketnum) {
+ FILE * fp;
+ //va_list ap;
+ char protomessage[256];
+ char currenttestarr[TEST_NAME_DESC_SIZE];
+ char currentstatusarr[TEST_STATUS_DESC_SIZE];
+ char isotime[64];
+ char *currenttestname = "";
+ char *teststatusdesc = "";
+ char tmplogname[FILENAME_SIZE]="";
+
+ //get descriptive strings for test name and status
+ currenttestname = get_testnamedesc(testid, currenttestarr);
+ teststatusdesc = get_teststatusdesc(teststatus, currentstatusarr);
+
+ if (!enableprotologging) {
+ log_println(5, "Protocol logging is not enabled");
+ return;
+ }
+
+ fp = fopen(get_protologfile(socketnum, tmplogname), "a");
+ if (fp == NULL) {
+ log_println(
+ 5,
+ "--Unable to open protocol log file while trying to record test status message: %s for the %s test \n",
+ teststatusdesc, currenttestname);
+ } else {
+ sprintf(protomessage,
+ " event=\"%s\", name=\"%s\", pid=\"%d\",
time=\"%s\"\n",
+ teststatusdesc, currenttestname, pid,
+ get_currenttime(isotime, sizeof(isotime)));
+ fprintf(fp, "%s", protomessage);
+ fclose(fp);
+ }
}

/**
- * Function name: get_timestamp
- * Description: Returns the previously recorded timestamp.
- * Returns: The timestamp
+ * Logs a protocol message specifically indicating the start/end or other status of processes.
+ * This method is different from the protolog_status in that this logs in status/progress of generic
+ * processes.
+ * @param pid PID of process
+ * @param testidarg enumerator indicating name of the test @see TEST_ID
+ * @param procidarg enumerator indicating name of the test @see PROCESS_TYPE_INT
+ * @param teststatusarg enumerator indicating test status. @see TEST_STATUS_INT
+ * @param socketnum Socket fd
*/
-time_t
-get_timestamp()
-{
- return timestamp;
+void protolog_procstatus(int pid, enum TEST_ID testidarg,
+ enum PROCESS_TYPE_INT procidarg, enum PROCESS_STATUS_INT teststatusarg, int socketnum) {
+ FILE * fp;
+ char protomessage[256];
+ char isotime[64];
+ char currentprocarr[TEST_NAME_DESC_SIZE]; // size suffices to describe process name name too
+ char currentstatusarr[PROCESS_STATUS_DESC_SIZE];
+ char currenttestarr[TEST_NAME_DESC_SIZE];
+
+ char *currentprocname = "";
+ char *procstatusdesc = "";
+ char *currenttestname = "";
+
+ char tmplogname[FILENAME_SIZE];
+
+ //get descriptive strings for test name and status
+ currenttestname = get_testnamedesc(testidarg, currenttestarr);
+ currentprocname = get_processtypedesc(procidarg, currentprocarr);
+ procstatusdesc = get_procstatusdesc(teststatusarg, currentstatusarr);
+
+ if (!enableprotologging) {
+ log_println(5, "Protocol logging is not enabled");
+ return;
+ }
+
+ fp = fopen(get_protologfile(socketnum, tmplogname), "a");
+
+ if (fp == NULL) {
+ printf(
+ "--Unable to open protocol log file while trying to record process status message: %s for the %s test \n",
+ procstatusdesc, currentprocname);
+ log_println(
+ 3,
+ "--Unable to open protocol log file while trying to record process status message: %s for the %s test \n",
+ procstatusdesc, currentprocname);
+ } else {
+ log_println(8, " a0\n %s, %s, %s,%d", procstatusdesc,currentprocname,currenttestname,pid);
+ sprintf(
+ protomessage,
+ " event=\"%s\", name=\"%s\", test=\"%s\", pid=\"%d\",
time=\"%s\"\n",
+ procstatusdesc, currentprocname,
currenttestname, pid,
+ get_currenttime(isotime, sizeof(isotime)));
+ fprintf(fp, "%s", protomessage);
+ fclose(fp);
+ }
}

/**
- * Function name: get_utimestamp
- * Description: Returns the previously recorded utimestamp.
- * Returns: The utimestamp
+ * Enable protocol logging
*/
-long int
-get_utimestamp()
-{
- return utimestamp;
+void enableprotocollogging() {
+ enableprotologging = 1;
}

/**
- * Function name get_YYYY
- * Description: Returns a character string YYYY for the current year
- * Author: Rich Carlson - 6/29/09
+ * Utility method to print binary value format of character data.
+ *
+ * @param charbinary 8 digit character that contains binary information
+ * @param binout_arr output array containing binary bits
*/
-
-void
- get_YYYY (char *year)
-{
-
-struct tm *result;
-time_t now;
-
-setenv("TZ", "UTC", 0);
-now = get_timestamp();
-result = gmtime(&now);
-
-sprintf(year, "%d", 1900+result->tm_year);
+void printbinary(char *charbinary, int inarray_size, char *binout_arr, int outarr_size) {
+ int j = 7, i = 0;
+
+ if ( outarr_size < 8 ) {
+ log_println(8, "Invalid array sizes while formatting protocol binary data. Quitting");
+ return;
+ }
+
+ for (j = 7 ; j >= 0 && i < BITS_8; j--) {
+ if ((*charbinary & (1 << j)))
+ binout_arr[i] = '1';
+ else
+ binout_arr[i] = '0';
+ i++;
+ }
+ binout_arr[i] = '\0';
+}
+
+
+
+/**
+ * Utility method to get the message body type.
+ * Currently, messages are either composed of one character, holding unsigned data
+ * in the form of bits indicating the chosen tests, or in the form of strings.
+ * Also, currently, there is just one MSG_LOGIN message that carries bit data.
+ * Hence, message body type is based on these factors.
+ *
+ * @param type ProtocolMessage type
+ * @param len Length of message body
+ * @param msgbodytype Storage for Message body type description
+ * @param msgpayload message payload
+ * @param msgbits message payload altered per its format type (output buffer)
+ * @param sizemsgbits Output buffer size
+ * @return isbitfield
+ */
+int getMessageBodyFormat(int type, int len, char* msgbodytype, char* msgpayload, char* msgbits, int sizemsgbits) {
+ int isbitfielddata = 0;
+ enum MSG_BODY_TYPE msgbodyformat = NOT_KNOWN;
+
+ if (type == MSG_LOGIN && len ==1 ) {
+ msgbodyformat = BITFIELD;
+ strlcpy(msgbodytype, (char *)getmessageformattype(msgbodyformat,msgbodytype), MSG_BODY_FMT_SIZE );
+ printbinary (msgpayload, len, msgbits, sizemsgbits);
+ isbitfielddata = 1;
+ }
+ else {
+ msgbodyformat = STRING;
+ strlcpy(msgbodytype , (char *)getmessageformattype(msgbodyformat,msgbodytype), MSG_BODY_FMT_SIZE);
+ // make delimiters in message payload explicit
+ quote_delimiters(msgpayload, len, msgbits, sizemsgbits);
+
+ }
+ return isbitfielddata;
+
}

+/** Log all send/receive protocol messages.
+ * This method currently is called only internally, and thus
+ * does not check for whether protocol logging is enabled
+ * @param lvl Level of the message
+ * @param *msgdirection Direction of msg (S->C, C->S)
+ * @param type message type
+ * @param *msg Actual message
+ * @param len Message length
+ * @param processid PID of process
+ * @param ctlSocket socket over which message has been exchanged
+ * */
+void protolog_println(char *msgdirection, const int type, void* msg,
+ const int len, const int processid, const int ctlSocket) {
+ FILE * fp;
+
+ char msgtypedescarr[MSG_TYPE_DESC_SIZE];
+ char *currenttestname, *currentmsgtype, *currentbodyfmt;
+ char isotime[64];
+ char logmessage[4096]; // message after replacing delimiter characters
+ char protologfile[FILENAME_SIZE];
+ char msgbodytype[MSG_BODY_FMT_SIZE];
+ int is_bitmessage = 0;
+
+ // get descriptive strings for test name and direction
+ currenttestname = get_currenttestdesc();
+ currentmsgtype = get_msgtypedesc(type, msgtypedescarr);
+
+ is_bitmessage = getMessageBodyFormat(type, len, msgbodytype, (char *) msg, logmessage, sizeof(logmessage));
+
+ fp = fopen(get_protologfile(ctlSocket, protologfile), "a");
+ if (fp == NULL) {
+ log_println(
+ 5,
+ "Unable to open protocol log file '%s', continuing
on without logging",
+ protologfile);
+ } else {
+ fprintf(
+ fp,
+ " event=\"message\", direction=\"%s\", test=\"%s\", type=\"%s\", len=\"%d\", msg_body_format=\"%s\", msg=\"%s\", pid=\"%d\", socket=\"%d\", time=\"%s\"\n",
+ msgdirection, currenttestname, currentmsgtype, len, msgbodytype, logmessage,
+ processid, ctlSocket,
get_currenttime(isotime, sizeof(isotime)));
+ fclose(fp);
+ }
+}
+
+/** Log "sent" protocol messages.
+ * Picks up the "send" direction and calls the generic protocol log method.
+ * @param lvl Level of the message
+ * @param type message type
+ * @param *msg Actual message
+ * @param len Message length
+ * @param processid PID of process
+ * @param ctlSocket socket over which message has been exchanged
+ * */
+void protolog_sendprintln(const int type, void* msg, const int len,
+ const int processid, const int ctlSocket) {
+ char *currentDir;
+
+ if (!enableprotologging) {
+ log_println(5, "Protocol logging is not enabled");
+ return;
+ }
+ currentDir = get_currentdirndesc();
+
+ protolog_println(currentDir, type, msg, len, processid, ctlSocket);
+}

/**
- * Function name get_MM
- * Description: Returns a character string MM for the current year
+ * Log all received protocol messages.
+ * Picks up the "receive" direction and calls the generic protocol log method.
+ * @param lvl Level of the message
+ * @param type message type
+ * @param *msg Actual message
+ * @param len Message length
+ * @param processid PID of process
+ * @param ctlSocket socket over which message has been exchanged
+ * */
+void protolog_rcvprintln(const int type, void* msg, const int len,
+ const int processid, const int ctlSocket) {
+ char *otherDir;
+ if (!enableprotologging) {
+ log_println(5, "Protocol logging is not enabled");
+ return;
+ }
+ otherDir = get_otherdirndesc();
+ protolog_println(otherDir, type, msg, len, processid, ctlSocket);
+}
+
+/**
+ * Set the timestamp to actual time.
+ */
+void set_timestamp() {
+ struct timeval tv;
+
+ gettimeofday(&tv, NULL);
+ timestamp = tv.tv_sec;
+ utimestamp = tv.tv_usec;
+
+ /* Changed function to use gettimeofday() need usec value for ISO8601 file names
+ * RAC 5/6/09
+ * timestamp = time(NULL);
+ */
+
+}
+
+/**
+ * Return the previously recorded timestamp.
+ * @return timestamp
+ */
+time_t get_timestamp() {
+ return timestamp;
+}
+
+/**
+ * Return the previously recorded utimestamp.
+ * @return The utimestamp
+ */
+long int get_utimestamp() {
+ return utimestamp;
+}
+
+/**
+ * Return a character string YYYY for the current year
* Author: Rich Carlson - 6/29/09
+ * @param Pointer to the string indicating the year
*/

-void
- get_MM (char *month)
-{
-
-struct tm *result;
-time_t now;
-
-/* setenv("TZ", NULL, 0); */
-setenv("TZ", "UTC", 0);
-now = get_timestamp();
-result = gmtime(&now);
-
-if (1+result->tm_mon < 10)
- sprintf(month, "0%d", 1+result->tm_mon);
-else
- sprintf(month, "%d", 1+result->tm_mon);
+void get_YYYY(char *year) {
+
+ struct tm *result;
+ time_t now;
+
+ setenv("TZ", "UTC", 0);
+ now = get_timestamp();
+ result = gmtime(&now);
+
+ sprintf(year, "%d", 1900 + result->tm_year);
}

/**
- * Function name get_DD
- * Description: Returns a character string DD for the current year
+ * Return a character string MM for the current year
* Author: Rich Carlson - 6/29/09
+ * @param Pointer to the string indicating month
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/src/logging.h Mon Aug 29 07:29:16 2011
+++ /trunk/src/logging.h Mon Apr 30 13:46:39 2012
@@ -1,4 +1,4 @@
-/*
+/**
* This file contains the function declarations of the logging
* system.
*
@@ -13,14 +13,19 @@
#include <dirent.h>
#include <sys/stat.h>
#include <sys/types.h>
-
+#include "ndtptestconstants.h"
+#include "runningtest.h" // protocol validation
#define LOGFILE "web100srv.log" /* Name of log file */
-
+#define PROTOLOGFILE "web100srvprotocol.log" /* Name of protocol validation log file */
+#define PROTOLOGPREFIX "web100srvprotocol_" /* prefix for protocol validation log file */
+#define PROTOLOGSUFFIX ".log" /* suffix for protocol validation log file */
+#define FILENAME_SIZE 256 // This could have been in utils.h, but will be used immediately here
void log_init(char* progname, int debuglvl);
void set_debuglvl(int debuglvl);
void set_logfile(char* filename);
int get_debuglvl();
char* get_logfile();
+
I2ErrHandle get_errhandle();
void log_print(int lvl, const char* format, ...);
void log_println(int lvl, const char* format, ...);
@@ -28,41 +33,76 @@
void set_timestamp();
time_t get_timestamp();
long int get_utimestamp();
-char * get_ISOtime(char * isoTime);
-void get_YYYY(char * year);
-void get_MM(char * month);
-void get_DD(char * day);
+char * get_ISOtime(char * isoTime, int isoTimeArrSize);
+char *get_currenttime(char *isoTime, int isotimearrsize);
+void get_YYYY(char * year);
+void get_MM(char * month);
+void get_DD(char * day);
char * DataDirName;

int zlib_def(char *src_fn);

+/**
+ * Format used to exchange meta test data between client->server.
+ * */
struct metaentry {
- char key[64];
- char value[256];
- struct metaentry* next;
+ char key[64]; // key name
+ char value[256]; // value associated with this meta key
+ struct metaentry* next; // pointer to next link
};

+/**
+ * Used to save results of meta tests.
+ * These values (most) are thes logged in the
+ * meta data file created for every session
+ * */
struct metadata {
- char c2s_snaplog[128];
- char c2s_ndttrace[128];
- char s2c_snaplog[128];
- char s2c_ndttrace[128];
- char CPU_time[128];
- char summary[256];
- char date[32];
- char time[16];
- char client_ip[64];
- struct sockaddr_storage c_addr;
- char client_name[64];
- char client_os[32];
- char client_browser[32];
- int ctl_port;
- char server_ip[64];
- char server_name[64];
- char server_os[32];
- int family;
- struct metaentry* additional;
+ char c2s_snaplog[FILENAME_SIZE]; // C->S test Snaplog file name, changed to 256 to avoid truncation
+ char c2s_ndttrace[FILENAME_SIZE]; // C->S NDT trace file name, changed to 256 to avoid truncation
+ char s2c_snaplog[FILENAME_SIZE]; // S->C test Snaplog file name, changed to 256 to avoid truncation
+ char s2c_ndttrace[FILENAME_SIZE]; // S->C NDT trace file name, changed to 256 to avoid truncation
+ char CPU_time[FILENAME_SIZE]; // CPU time file
+ char summary[256]; // Summary data
+ char date[32]; // Date and,
+ char time[16]; // time
+ char client_ip[64]; // Client IP Address
+ struct sockaddr_storage c_addr; // client socket details, not logged
+ char client_name[64]; // client's host-name
+ char client_os[32]; // client OS name
+ char client_browser[32]; // client's browser name
+ int ctl_port; // ctl port
+ char server_ip[64]; // server IP address
+ char server_name[64]; // server's host-name
+ char server_os[32]; // server os name
+ int family; // IP family
+ struct metaentry* additional; // all other additional data
};

+void set_protologdir(char* dirname);
+void set_protologfile(char* client_ip, char *protologfileparam);
+char*
+get_protologfile(int socketNum, char *protologfilename) ;
+char* get_protologdir();
+void enableprotocollogging();
+char *createprotologfilename(char* client_ip, char* textappendarg);
+void create_named_logdir(char *dirnamedestarg, int destnamearrsize,
+ char *finalsuffix);
+void create_client_logdir(struct sockaddr *cliaddrarg, socklen_t clilenarg,
+ char *dirnamedestarg, int destnamearrsize, char *finalsuffix,
+ int finalsuffixsize);
+void log_linkspeed(int index);
+
+void protolog_printgeneric(const char* key, const char* val,int socketnum);
+void protolog_status(int pid, enum TEST_ID testid,
+ enum TEST_STATUS_INT teststatus,int socketnum);
+void protolog_sendprintln(const int type, void* msg, const int len,
+ const int processid, const int ctlSocket);
+void protolog_rcvprintln(const int type, void* msg, const int len,
+ const int processid, const int ctlSocket);
+void protolog_procstatus(int pid, enum TEST_ID testidarg,
+ enum PROCESS_TYPE_INT procidarg, enum PROCESS_STATUS_INT teststatusarg, int socketnum);
+void protolog_procstatuslog(int pid, enum TEST_ID testidarg,
+ enum PROCESS_TYPE_INT procidarg, enum PROCESS_STATUS_INT teststatusarg, int socketnum);
+
struct metadata meta;
#endif
=======================================
--- /trunk/src/mrange.c Tue Oct 13 07:49:45 2009
+++ /trunk/src/mrange.c Mon Apr 30 13:46:39 2012
@@ -12,11 +12,12 @@

#include "utils.h"
#include "logging.h"
+#include "strlutils.h"

typedef struct range {
- int min;
- int max;
- struct range *next;
+ int min; /**< lower end of the range */
+ int max; /**< upper end of the range */
+ struct range *next; /**< pointer to the next range member */
} Range;

static Range* mrange_root;
@@ -30,91 +31,100 @@
* 1 - there was a syntax error in the string
*/

-int
-mrange_parse(char* text)
-{
- char tmp[300];
- char* ptr, *sptr;
- Range* mr_ptr;
-
- assert(text);
-
- memset(tmp, 0, 300);
- if (strlen(text) > 299) {
- return 1;
- }
- strcpy(tmp, text);
- ptr = strtok(tmp, ",");
- while (ptr != NULL) {
- if ((sptr = strchr(ptr, ':')) != NULL) {
- *sptr++ = 0;
- if (strchr(sptr, ':') != NULL) {
- return 1;
- }
- }
- else {
- sptr = ptr;
- }
- if ((mr_ptr = malloc(sizeof(Range))) == NULL) {
- log_println(0, "FATAL: cannot allocate memory");
- return 1;
- }
- if (*ptr == 0) {
- ptr = "1";
- }
- if (check_rint(ptr, &mr_ptr->min, 1, 65535)) {
- free(mr_ptr);
- return 1;
- }
- if (*sptr == 0) {
- sptr = "65535";
- }
- if (check_rint(sptr, &mr_ptr->max, 1, 65535)) {
- free(mr_ptr);
- return 1;
- }
- mr_ptr->next = mrange_root;
- mrange_root = mr_ptr;
- ptr = strtok(NULL, ",");
- }
- free(mr_ptr);
- return 0;
+int mrange_parse(char* text) {
+ char tmp[300];
+ char* ptr, *sptr;
+ Range* mr_ptr;
+
+ assert(text);
+
+ memset(tmp, 0, 300);
+ if (strlen(text) > 299) {
+ return 1;
+ }
+ //strcpy(tmp, text);
+ strlcpy(tmp, text, sizeof(tmp));
+ // tokenize based on a "," character.
+ // An example of the string : 2003:3000,4000:5000
+ ptr = strtok(tmp, ",");
+ while (ptr != NULL) { // tokens found
+ if ((sptr = strchr(ptr, ':')) != NULL) { // also found a ":"
character,
+
// with sptr pointing to its location
+ *sptr++ = 0;
+ if (strchr(sptr, ':') != NULL) { // should not find
any more range
+ return 1;
+ }
+ } else {
+ sptr = ptr;
+ }
+ if ((mr_ptr = malloc(sizeof(Range))) == NULL) {
+ log_println(0, "FATAL: cannot allocate memory");
+ return 1;
+ }
+ if (*ptr == 0) {
+ ptr = "1";
+ }
+ // Check if the input string is within range and store
+ // result as "minimum"
+ // For ex: Is 2003 in a string like "2003:4000" within
integer range ?
+ // If not, free the memory allocated to store the range and
return
+ if (check_rint(ptr, &mr_ptr->min, 1, MAX_TCP_PORT)) {
+ free(mr_ptr);
+ return 1;
+ }
+ if (*sptr == 0) {
+ sptr = MAX_TCP_PORT_STR;
+ }
+ // now validate if "maximum" is within range and store
+ // result as "maximum"
+ if (check_rint(sptr, &mr_ptr->max, 1, MAX_TCP_PORT)) {
+ free(mr_ptr);
+ return 1; // if invalid range, free allocated memory
and return
+ }
+ mr_ptr->next = mrange_root;
+ mrange_root = mr_ptr; // ready to point to next member
+ ptr = strtok(NULL, ",");
+ }
+ free(mr_ptr);
+ return 0;
}

-/*
- * Function name: mrange_parse
- * Description: Parses the string argument and adds the ranges to
- * the free pool.
- * Arguments: text - the string containing ranges
- * Returns: 0 - the string was parsed correctly
- * 1 - there was a syntax error in the string
+/**
+ * Checks if a given number (passed in as string argument)
+ * is available as a valid integer in the free pool. For example,
+ * if we construct a list of valid port ranges, then this function
+ * could be used to parse through the list to check for a usable port
+ *
+ * @param port string containing port
+ * @returns char* containing 0 if the argument is invalid,
+ * or the port passed as parameter, if valid
*/

char*
-mrange_next(char* port)
-{
- int val;
- Range* ptr;
-
- assert(port);
-
- if (check_rint(port, &val, 0, 65535)) {
- log_println(0, "WARNING: invalid port number");
- sprintf(port, "0");
- return port;
- }
- val++;
- while (val < 65536) {
- ptr = mrange_root;
- while (ptr != NULL) {
- if ((val >= ptr->min) && (val <= ptr->max)) {
- sprintf(port, "%d", val);
- return port;
- }
- ptr = ptr->next;
- }
- val++;
- }
- sprintf(port, "0");
- return port;
-}
+mrange_next(char* port) {
+ int val;
+ Range* ptr;
+
+ assert(port);
+
+ if (check_rint(port, &val, 0, MAX_TCP_PORT)) { // check if valid
+ log_println(0, "WARNING: invalid port number");
+ sprintf(port, RESERVED_PORT);
+ return port;
+ }
+ val++;
+ while (val <= MAX_TCP_PORT) { // Maximum port number not exceeded
+ ptr = mrange_root;
+ while (ptr != NULL) { // While there is some data
+ if ((val >= ptr->min) && (val <= ptr->max)) { //
check range
+
// and return port if valid
+ sprintf(port, "%d", val);
+ return port;
+ }
+ ptr = ptr->next;
+ }
+ val++;
+ }
+ sprintf(port, RESERVED_PORT);
+ return port;
+}
=======================================
--- /trunk/src/ndt_odbc.c Wed Oct 10 14:09:36 2007
+++ /trunk/src/ndt_odbc.c Mon Apr 30 13:46:39 2012
@@ -16,267 +16,300 @@

#include "ndt_odbc.h"
#include "logging.h"
+#include "strlutils.h"

#if defined(HAVE_ODBC) && defined(DATABASE_ENABLED) && defined(HAVE_SQL_H)
SQLHENV env;
SQLHDBC dbc;
SQLHSTMT stmt = NULL;
char* ctStmt_1 = "CREATE TABLE ndt_test_results ("
- "spds1 TEXT,"
- "spds2 TEXT,"
- "spds3 TEXT,"
- "spds4 TEXT,"
- "runave1 FLOAT,"
- "runave2 FLOAT,"
- "runave3 FLOAT,"
- "runave4 FLOAT,"
- "cputimelog TEXT,"
- "snaplog TEXT,"
- "c2s_snaplog TEXT,"
- "hostName TEXT,"
- "testPort INT,"
- "date TEXT,"
- "rmt_host TEXT,";
+"spds1 TEXT,"
+"spds2 TEXT,"
+"spds3 TEXT,"
+"spds4 TEXT,"
+"runave1 FLOAT,"
+"runave2 FLOAT,"
+"runave3 FLOAT,"
+"runave4 FLOAT,"
+"cputimelog TEXT,"
+"snaplog TEXT,"
+"c2s_snaplog TEXT,"
+"hostName TEXT,"
+"testPort INT,"
+"date TEXT,"
+"rmt_host TEXT,";
char* ctStmt_2 = "s2c2spd INT,"
- "s2cspd INT,"
- "c2sspd INT,"
- "Timeouts INT,"
- "SumRTT INT,"
- "CountRTT INT,"
- "PktsRetrans INT,"
- "FastRetran INT,"
- "DataPktsOut INT,"
- "AckPktsOut INT,"
- "CurrentMSS INT,"
- "DupAcksIn INT,"
- "AckPktsIn INT,"
- "MaxRwinRcvd INT,"
- "Sndbuf INT,"
- "MaxCwnd INT,";
+"s2cspd INT,"
+"c2sspd INT,"
+"Timeouts INT,"
+"SumRTT INT,"
+"CountRTT INT,"
+"PktsRetrans INT,"
+"FastRetran INT,"
+"DataPktsOut INT,"
+"AckPktsOut INT,"
+"CurrentMSS INT,"
+"DupAcksIn INT,"
+"AckPktsIn INT,"
+"MaxRwinRcvd INT,"
+"Sndbuf INT,"
+"MaxCwnd INT,";
char* ctStmt_3 = "SndLimTimeRwin INT,"
- "SndLimTimeCwnd INT,"
- "SndLimTimeSender INT,"
- "DataBytesOut INT,"
- "SndLimTransRwin INT,"
- "SndLimTransCwnd INT,"
- "SndLimTransSender INT,"
- "MaxSsthresh INT,"
- "CurrentRTO INT,"
- "CurrentRwinRcvd INT,"
- "link INT,"
- "mismatch INT,"
- "bad_cable INT,"
- "half_duplex INT,"
- "congestion INT,"
- "c2sdata INT,";
+"SndLimTimeCwnd INT,"
+"SndLimTimeSender INT,"
+"DataBytesOut INT,"
+"SndLimTransRwin INT,"
+"SndLimTransCwnd INT,"
+"SndLimTransSender INT,"
+"MaxSsthresh INT,"
+"CurrentRTO INT,"
+"CurrentRwinRcvd INT,"
+"link INT,"
+"mismatch INT,"
+"bad_cable INT,"
+"half_duplex INT,"
+"congestion INT,"
+"c2sdata INT,";
char* ctStmt_4 = "c2sack INT,"
- "s2cdata INT,"
- "s2cack INT,"
- "CongestionSignals INT,"
- "PktsOut INT,"
- "MinRTT INT,"
- "RcvWinScale INT,"
- "autotune INT,"
- "CongAvoid INT,"
- "CongestionOverCount INT,"
- "MaxRTT INT,"
- "OtherReductions INT,"
- "CurTimeoutCount INT,"
- "AbruptTimeouts INT,"
- "SendStall INT,"
- "SlowStart INT,"
- "SubsequentTimeouts INT,"
- "ThruBytesAcked INT,"
- "minPeak INT,"
- "maxPeak INT,"
- "peaks INT"
- ");";
+"s2cdata INT,"
+"s2cack INT,"
+"CongestionSignals INT,"
+"PktsOut INT,"
+"MinRTT INT,"
+"RcvWinScale INT,"
+"autotune INT,"
+"CongAvoid INT,"
+"CongestionOverCount INT,"
+"MaxRTT INT,"
+"OtherReductions INT,"
+"CurTimeoutCount INT,"
+"AbruptTimeouts INT,"
+"SendStall INT,"
+"SlowStart INT,"
+"SubsequentTimeouts INT,"
+"ThruBytesAcked INT,"
+"minPeak INT,"
+"maxPeak INT,"
+"peaks INT"
+");";
char createTableStmt[2048];

+/**
+ * Retrieves all the diagnostics
+ * associated with that a given SQL handle
+ * @param fn pointer to function name string
+ * @param handle SQLHandle
+ * @param type SQLHandle type
+ * */
+
static void
extract_error(char *fn, SQLHANDLE handle, SQLSMALLINT type)
{
- SQLINTEGER i = 0;
- SQLINTEGER native;
- SQLCHAR state[ 7 ];
- SQLCHAR text[256];
- SQLSMALLINT len;
- SQLRETURN ret;
-
- log_println(2, "\nThe driver reported the following diagnostics whilst running %s:\n", fn);
- do
- {
- ret = SQLGetDiagRec(type, handle, ++i, state, &native, text,
- sizeof(text), &len );
- if (SQL_SUCCEEDED(ret))
- log_println(2, "%s:%ld:%ld:%s", state, i, native, text);
- }
- while( ret == SQL_SUCCESS );
+ SQLINTEGER i = 0;
+ SQLINTEGER native;
+ SQLCHAR state[ 7 ];
+ SQLCHAR text[256];
+ SQLSMALLINT len;
+ SQLRETURN ret;
+
+ log_println(2, "\nThe driver reported the following diagnostics whilst running %s:\n", fn);
+ do
+ {
+ // get current values of multiple fields(error, warning, and status) of diagnostic record
+ // and see if return value indicated success
+ ret = SQLGetDiagRec(type, handle, ++i, state, &native, text,
+ sizeof(text), &len );
+ if (SQL_SUCCEEDED(ret))
+ log_println(2, "%s:%ld:%ld:%s", state, i, native, text);
+ }
+ while( ret == SQL_SUCCESS );
}
#endif

-int
-initialize_db(int options, char* dsn, char* uid, char* pwd)
-{
+/**
+ * Initialize Database
+ * @param options integer indicating whether DB should be used
+ * @param dsn data source name string pointer
+ * @param uid User name string pointer the db uses for authentication
+ * @param pwd pointer to password string pointer the db uses for authentication
+ * @return integer 0 if success, 1 if failure
+ * */
+int initialize_db(int options, char* dsn, char* uid, char* pwd) {
#if defined(HAVE_ODBC) && defined(DATABASE_ENABLED) && defined(HAVE_SQL_H)
- if (options) {
- SQLRETURN ret; /* ODBC API return status */
- SQLSMALLINT columns; /* number of columns in result-set */
- SQLCHAR outstr[1024];
- SQLSMALLINT outstrlen;
- char loginstring[1024];
-
- log_println(1, "Initializing DB with DSN='%s', UID='%s', PWD=%s", dsn, uid, pwd ? "yes" : "no");
- sprintf(createTableStmt, "%s%s%s%s", ctStmt_1, ctStmt_2, ctStmt_3, ctStmt_4);
-
- /* Allocate an environment handle */
- SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
- /* We want ODBC 3 support */
- SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0);
- /* Allocate a connection handle */
- SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
- /* Connect to the DSN */
- memset(loginstring, 0, 1024);
- snprintf(loginstring, 256, "DSN=%s;", dsn);
- if (uid) {
- strcat(loginstring, "UID=");
- strncat(loginstring, uid, 256);
- strcat(loginstring, ";");
- }
- if (pwd) {
- strcat(loginstring, "PWD=");
- strncat(loginstring, pwd, 256);
- }
- ret = SQLDriverConnect(dbc, NULL, (unsigned char*) loginstring, SQL_NTS,
- outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_NOPROMPT);
- if (SQL_SUCCEEDED(ret)) {
- log_println(2, " Connected");
- log_println(2, " Returned connection string was:\n\t%s", outstr);
- if (ret == SQL_SUCCESS_WITH_INFO) {
- log_println(2, "Driver reported the following diagnostics");
- extract_error("SQLDriverConnect", dbc, SQL_HANDLE_DBC);
- }
- } else {
- log_println(0, " Failed to connect to the DSN\n Continuing without DB logging");
- extract_error("SQLDriverConnect", dbc, SQL_HANDLE_DBC);
- return 1;
- }
- /* Allocate a statement handle */
- ret = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
- if (!SQL_SUCCEEDED(ret)) {
- log_println(0, " Failed to alloc statement handle\n Continuing without DB logging");
- extract_error("SQLAllocHandle", dbc, SQL_HANDLE_DBC);
- return 1;
- }
- /* Retrieve a list of tables */
- ret = SQLTables(stmt, NULL, 0, NULL, 0, NULL, 0, (unsigned char*) "TABLE", SQL_NTS);
- if (!SQL_SUCCEEDED(ret)) {
- log_println(0, " Failed to fetch table info\n Continuing without DB logging");
- extract_error("SQLTables", dbc, SQL_HANDLE_DBC);
- return 1;
- }
- /* How many columns are there */
- SQLNumResultCols(stmt, &columns);
-
- /* Loop through the rows in the result-set */
- while (SQL_SUCCEEDED(ret = SQLFetch(stmt))) {
- SQLUSMALLINT i;
- /* Loop through the columns */
- for (i = 2; i <= columns; i++) {
- SQLINTEGER indicator;
- char buf[512];
- /* retrieve column data as a string */
- ret = SQLGetData(stmt, i, SQL_C_CHAR,
- buf, sizeof(buf), &indicator);
- if (SQL_SUCCEEDED(ret)) {
- /* Handle null columns */
- if (indicator == SQL_NULL_DATA) strcpy(buf, "NULL");
- if (strcmp(buf, "ndt_test_results") == 0) {
- /* the table exists - do nothing */
- SQLFreeStmt(stmt, SQL_CLOSE);
- return 0;
- }
- }
- }
- }
- /* the table doesn't exist - create the one */
- SQLFreeStmt(stmt, SQL_CLOSE);
- log_print(1, "The table 'ndt_test_results' doesn't exist, creating...");
- ret = SQLExecDirect(stmt, (unsigned char*) createTableStmt, strlen(createTableStmt));
- if (!SQL_SUCCEEDED(ret)) {
- log_println(0, " Failed to create table\n Continuing without DB logging");
- extract_error("SQLExecDirect", dbc, SQL_HANDLE_DBC);
- stmt = NULL;
- return 1;
- }
- log_println(1, " SUCCESS!");
- }
- return 0;
+ if (options) {
+ SQLRETURN ret; /* ODBC API return status */
+ SQLSMALLINT columns; /* number of columns in result-set */
+ SQLCHAR outstr[1024];
+ SQLSMALLINT outstrlen;
+ char loginstring[1024];
+
+ log_println(1, "Initializing DB with DSN='%s', UID='%s', PWD=%s", dsn, uid, pwd ? "yes" : "no");
+ sprintf(createTableStmt, "%s%s%s%s", ctStmt_1, ctStmt_2, ctStmt_3, ctStmt_4);
+
+ // Allocate an environment handle
+ SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
+ // We want ODBC 3 support
+ SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *)
SQL_OV_ODBC3, 0);
+ // Allocate a connection handle
+ SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
+ // Connect to the DSN after creating summarizing login data
+ // into "loginstring"
+ memset(loginstring, 0, 1024);
+ snprintf(loginstring, 256, "DSN=%s;", dsn);
+ if (uid) {
+ /*strcat(loginstring, "UID=");
+ strncat(loginstring, uid, 256);
+ strcat(loginstring, ";");*/
+ strlcat(loginstring, "UID=", sizeof(loginstring));
+ strlcat(loginstring, uid, sizeof(loginstring));
+ strlcat(loginstring, ";", sizeof(loginstring));
+ }
+ if (pwd) {
+ //strcat(loginstring, "PWD=");
+ strlcat(loginstring, "PWD=", sizeof(loginstring));
+ //strncat(loginstring, pwd, 256);
+ strlcat(loginstring, pwd, sizeof(loginstring));
+ }
+ ret = SQLDriverConnect(dbc, NULL, (unsigned char*)
loginstring, SQL_NTS,
+ outstr, sizeof(outstr), &outstrlen,
SQL_DRIVER_NOPROMPT);
+ if (SQL_SUCCEEDED(ret)) {
+ log_println(2, " Connected");
+ log_println(2, " Returned connection string
was:\n\t%s", outstr);
+ if (ret == SQL_SUCCESS_WITH_INFO) {
+ log_println(2, "Driver reported the following
diagnostics");
+ extract_error("SQLDriverConnect", dbc,
SQL_HANDLE_DBC);
+ }
+ } else {
+ log_println(0, " Failed to connect to the DSN\n Continuing without DB logging");
+ extract_error("SQLDriverConnect", dbc,
SQL_HANDLE_DBC);
+ return 1;
+ }
+ // Allocate a statement handle
+ ret = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
+ if (!SQL_SUCCEEDED(ret)) {
+ log_println(0, " Failed to alloc statement handle\n Continuing without DB logging");
+ extract_error("SQLAllocHandle", dbc, SQL_HANDLE_DBC);
+ return 1;
+ }
+ // Retrieve a list of tables
+ ret = SQLTables(stmt, NULL, 0, NULL, 0, NULL, 0, (unsigned char*) "TABLE", SQL_NTS);
+ if (!SQL_SUCCEEDED(ret)) {
+ log_println(0, " Failed to fetch table info\n Continuing without DB logging");
+ extract_error("SQLTables", dbc, SQL_HANDLE_DBC);
+ return 1;
+ }
+ // How many columns are there?
+ SQLNumResultCols(stmt, &columns);
+
+ // Loop through the rows in the result-set
+ while (SQL_SUCCEEDED(ret = SQLFetch(stmt))) {
+ SQLUSMALLINT i;
+ // Loop through the columns
+ for (i = 2; i <= columns; i++) {
+ SQLINTEGER indicator;
+ char buf[512];
+ // retrieve column data as a string
+ ret = SQLGetData(stmt, i, SQL_C_CHAR,
+ buf, sizeof(buf), &indicator);
+ if (SQL_SUCCEEDED(ret)) {
+ // Handle null columns
+ if (indicator == SQL_NULL_DATA)
+ //strcpy(buf, "NULL");
+ strlcpy(buf, "NULL", sizeof(buf));
+ if (strcmp(buf, "ndt_test_results")
== 0) {
+ // the table exists - do
nothing
+ SQLFreeStmt(stmt, SQL_CLOSE);
+ return 0;
+ }
+ }
+ }
+ }
+
+ // the table doesn't exist - create it
+ SQLFreeStmt(stmt, SQL_CLOSE);
+ log_print(1, "The table 'ndt_test_results' doesn't exist,
creating...");
+ ret = SQLExecDirect(stmt, (unsigned char*) createTableStmt, strlen(createTableStmt));
+ if (!SQL_SUCCEEDED(ret)) {
+ log_println(0, " Failed to create table\n Continuing without DB logging");
+ extract_error("SQLExecDirect", dbc, SQL_HANDLE_DBC);
+ stmt = NULL;
+ return 1;
+ }
+ log_println(1, " SUCCESS!");
+ }
+ return 0;
#else
- return 1;
+ return 1;
#endif
}

-int
-db_insert(char spds[4][256], float runave[], char* cputimelog, char* snaplog, char* c2s_snaplog,
- char* hostName, int testPort,
- char* date, char* rmt_host, int s2c2spd, int s2cspd, int c2sspd, int Timeouts,
- int SumRTT, int CountRTT, int PktsRetrans, int FastRetran, int DataPktsOut,
- int AckPktsOut, int CurrentMSS, int DupAcksIn, int AckPktsIn, int MaxRwinRcvd,
- int Sndbuf, int MaxCwnd, int SndLimTimeRwin, int SndLimTimeCwnd, int SndLimTimeSender,
- int DataBytesOut, int SndLimTransRwin, int SndLimTransCwnd, int SndLimTransSender,
- int MaxSsthresh, int CurrentRTO, int CurrentRwinRcvd, int link, int mismatch,
- int bad_cable, int half_duplex, int congestion, int c2sdata, int c2sack, int s2cdata,
- int s2cack, int CongestionSignals, int PktsOut, int MinRTT, int RcvWinScale,
- int autotune, int CongAvoid, int CongestionOverCount, int MaxRTT, int OtherReductions,
- int CurTimeoutCount, int AbruptTimeouts, int SendStall, int SlowStart,
- int SubsequentTimeouts, int ThruBytesAcked, int minPeak, int maxPeak, int peaks)
-{
+/**
+ * Insert row of test results into Database
+ * @params All parameters related to test results collected
+ * @return integer 0 if success, 1 if failure
+ * */
+int db_insert(char spds[4][256], float runave[], char* cputimelog,
+ char* snaplog, char* c2s_snaplog, char* hostName, int
testPort,
+ char* date, char* rmt_host, int s2c2spd, int s2cspd, int
c2sspd,
+ int Timeouts, int SumRTT, int CountRTT, int PktsRetrans, int
FastRetran,
+ int DataPktsOut, int AckPktsOut, int CurrentMSS, int
DupAcksIn,
+ int AckPktsIn, int MaxRwinRcvd, int Sndbuf, int MaxCwnd,
+ int SndLimTimeRwin, int SndLimTimeCwnd, int SndLimTimeSender,
+ int DataBytesOut, int SndLimTransRwin, int SndLimTransCwnd,
+ int SndLimTransSender, int MaxSsthresh, int CurrentRTO,
+ int CurrentRwinRcvd, int link, int mismatch, int bad_cable,
+ int half_duplex, int congestion, int c2s_linkspeed_data, int c2s_linkspeed_ack, int s2c_linkspeed_data,
+ int s2c_linkspeed_ack, int CongestionSignals, int PktsOut,
int MinRTT,
+ int RcvWinScale, int autotune, int CongAvoid, int
CongestionOverCount,
+ int MaxRTT, int OtherReductions, int CurTimeoutCount,
+ int AbruptTimeouts, int SendStall, int SlowStart,
+ int SubsequentTimeouts, int ThruBytesAcked, int minPeak, int
maxPeak,
+ int peaks) {
#if defined(HAVE_ODBC) && defined(DATABASE_ENABLED) && defined(HAVE_SQL_H)
- SQLRETURN ret;
- char insertStmt[2048];
- if (!stmt) {
- return 1;
- }
- snprintf(insertStmt, 2040, "INSERT INTO ndt_test_results VALUES ("
- "'%s','%s','%s','%s',%f,%f,%f,%f,"
- "'%s','%s','%s','%s',%d,"
- "'%s','%s',%d,%d,%d,%d,"
- "%d,%d,%d,%d,%d,"
- "%d,%d,%d,%d,%d,"
- "%d,%d,%d,%d,%d,"
- "%d,%d,%d,%d,"
- "%d,%d,%d,%d,%d,"
- "%d,%d,%d,%d,%d,%d,"
- "%d,%d,%d,%d,%d,"
- "%d,%d,%d,%d,%d,"
- "%d,%d,%d,%d,"
- "%d,%d,%d,%d,%d"
- ");",
- spds[0], spds[1], spds[2], spds[3], runave[0], runave[1], runave[2], runave[3],
- cputimelog, snaplog, c2s_snaplog, hostName, testPort,
- date, rmt_host, s2c2spd, s2cspd, c2sspd, Timeouts,
- SumRTT, CountRTT, PktsRetrans, FastRetran, DataPktsOut,
- AckPktsOut, CurrentMSS, DupAcksIn, AckPktsIn, MaxRwinRcvd,
- Sndbuf, MaxCwnd, SndLimTimeRwin, SndLimTimeCwnd, SndLimTimeSender,
- DataBytesOut, SndLimTransRwin, SndLimTransCwnd, SndLimTransSender,
- MaxSsthresh, CurrentRTO, CurrentRwinRcvd, link, mismatch,
- bad_cable, half_duplex, congestion, c2sdata, c2sack, s2cdata,
- s2cack, CongestionSignals, PktsOut, MinRTT, RcvWinScale,
- autotune, CongAvoid, CongestionOverCount, MaxRTT, OtherReductions,
- CurTimeoutCount, AbruptTimeouts, SendStall, SlowStart,
- SubsequentTimeouts, ThruBytesAcked, minPeak, maxPeak, peaks
- );
- ret = SQLExecDirect(stmt, (unsigned char*) insertStmt, strlen(insertStmt));
- if (!SQL_SUCCEEDED(ret)) {
- log_println(0, " Failed to insert test results into the table\n Continuing without DB logging");
- extract_error("SQLExecDirect", dbc, SQL_HANDLE_DBC);
- stmt = NULL;
- return 1;
- }
-
- return 0;
+ SQLRETURN ret;
+ char insertStmt[2048];
+ if (!stmt) {
+ return 1;
+ }
+ snprintf(insertStmt, 2040, "INSERT INTO ndt_test_results VALUES ("
+ "'%s','%s','%s','%s',%f,%f,%f,%f,"
+ "'%s','%s','%s','%s',%d,"
+ "'%s','%s',%d,%d,%d,%d,"
+ "%d,%d,%d,%d,%d,"
+ "%d,%d,%d,%d,%d,"
+ "%d,%d,%d,%d,%d,"
+ "%d,%d,%d,%d,"
+ "%d,%d,%d,%d,%d,"
+ "%d,%d,%d,%d,%d,%d,"
+ "%d,%d,%d,%d,%d,"
+ "%d,%d,%d,%d,%d,"
+ "%d,%d,%d,%d,"
+ "%d,%d,%d,%d,%d"
+ ");",
+ spds[0], spds[1], spds[2], spds[3], runave[0], runave[1], runave[2], runave[3],
+ cputimelog, snaplog, c2s_snaplog, hostName, testPort,
+ date, rmt_host, s2c2spd, s2cspd, c2sspd, Timeouts,
+ SumRTT, CountRTT, PktsRetrans, FastRetran,
DataPktsOut,
+ AckPktsOut, CurrentMSS, DupAcksIn, AckPktsIn,
MaxRwinRcvd,
+ Sndbuf, MaxCwnd, SndLimTimeRwin, SndLimTimeCwnd,
SndLimTimeSender,
+ DataBytesOut, SndLimTransRwin, SndLimTransCwnd,
SndLimTransSender,
+ MaxSsthresh, CurrentRTO, CurrentRwinRcvd, link,
mismatch,
+ bad_cable, half_duplex, congestion, c2s_linkspeed_data, c2s_linkspeed_ack, s2c_linkspeed_data,
+ s2c_linkspeed_ack, CongestionSignals, PktsOut,
MinRTT, RcvWinScale,
+ autotune, CongAvoid, CongestionOverCount, MaxRTT,
OtherReductions,
+ CurTimeoutCount, AbruptTimeouts, SendStall, SlowStart,
+ SubsequentTimeouts, ThruBytesAcked, minPeak, maxPeak,
peaks
+ );
+ ret = SQLExecDirect(stmt, (unsigned char*) insertStmt, strlen(insertStmt));
+ if (!SQL_SUCCEEDED(ret)) {
+ log_println(0, " Failed to insert test results into the table\n Continuing without DB logging");
+ extract_error("SQLExecDirect", dbc, SQL_HANDLE_DBC);
+ stmt = NULL;
+ return 1;
+ }
+
+ return 0;
#else
- return 1;
+ return 1;
#endif
}
=======================================
--- /trunk/src/ndt_odbc.h Sun Sep 23 12:50:26 2007
+++ /trunk/src/ndt_odbc.h Mon Apr 30 13:46:39 2012
@@ -9,18 +9,22 @@
#define _JS_NDT_ODBC_H

int initialize_db(int options, char* dsn, char* uin, char* pwd);
-int db_insert(char spds[4][256], float runave[], char* cputimelog, char* snaplog, char* c2s_snaplog,
- char* hostName, int testPort,
- char* date, char* rmt_host, int s2c2spd, int s2cspd, int c2sspd, int Timeouts,
- int SumRTT, int CountRTT, int PktsRetrans, int FastRetran, int DataPktsOut,
- int AckPktsOut, int CurrentMSS, int DupAcksIn, int AckPktsIn, int MaxRwinRcvd,
- int Sndbuf, int MaxCwnd, int SndLimTimeRwin, int SndLimTimeCwnd, int SndLimTimeSender,
- int DataBytesOut, int SndLimTransRwin, int SndLimTransCwnd, int SndLimTransSender,
- int MaxSsthresh, int CurrentRTO, int CurrentRwinRcvd, int link, int mismatch,
- int bad_cable, int half_duplex, int congestion, int c2sdata, int c2sack, int s2cdata,
- int s2cack, int CongestionSignals, int PktsOut, int MinRTT, int RcvWinScale,
- int autotune, int CongAvoid, int CongestionOverCount, int MaxRTT, int OtherReductions,
- int CurTimeoutCount, int AbruptTimeouts, int SendStall, int SlowStart,
- int SubsequentTimeouts, int ThruBytesAcked, int minPeaks, int maxPeaks, int peaks);
+int db_insert(char spds[4][256], float runave[], char* cputimelog,
+ char* snaplog, char* c2s_snaplog, char* hostName, int
testPort,
+ char* date, char* rmt_host, int s2c2spd, int s2cspd, int
c2sspd,
+ int Timeouts, int SumRTT, int CountRTT, int PktsRetrans, int
FastRetran,
+ int DataPktsOut, int AckPktsOut, int CurrentMSS, int
DupAcksIn,
+ int AckPktsIn, int MaxRwinRcvd, int Sndbuf, int MaxCwnd,
+ int SndLimTimeRwin, int SndLimTimeCwnd, int SndLimTimeSender,
+ int DataBytesOut, int SndLimTransRwin, int SndLimTransCwnd,
+ int SndLimTransSender, int MaxSsthresh, int CurrentRTO,
+ int CurrentRwinRcvd, int link, int mismatch, int bad_cable,
+ int half_duplex, int congestion, int c2sdata, int c2sack, int
s2cdata,
+ int s2cack, int CongestionSignals, int PktsOut, int MinRTT,
+ int RcvWinScale, int autotune, int CongAvoid, int
CongestionOverCount,
+ int MaxRTT, int OtherReductions, int CurTimeoutCount,
+ int AbruptTimeouts, int SendStall, int SlowStart,
+ int SubsequentTimeouts, int ThruBytesAcked, int minPeaks, int
maxPeaks,
+ int peaks);

#endif
=======================================
--- /trunk/src/network.c Fri Apr 9 09:23:03 2010
+++ /trunk/src/network.c Mon Apr 30 13:46:39 2012
@@ -1,4 +1,4 @@
-/*
+/**
* This file contains the functions needed to handle network related
* stuff.
*
@@ -13,487 +13,559 @@
#include "network.h"
#include "logging.h"

-/*
- * Function name: OpenSocket
- * Description: Creates and binds the socket.
- * Arguments: addr - the I2Addr structure, where the new socket will be stored
- * serv - the port number
- * options - the binding socket options
- * Returns: The socket descriptor or error code (<0).
+/**
+ * Create and bind socket.
+ * @param addr I2Addr structure, where the new socket will be stored
+ * @param serv the port number
+ * @param options the binding socket options
+ * @returns The socket descriptor or error code (<0).
+ * Error codes:
+ * -1 : Unable to set socket address/port/file descriptor in address record "addr"
+ * -2 : Unable to set socket options
*/

-static int
-OpenSocket(I2Addr addr, char* serv, int options)
-{
- struct addrinfo *fai;
- struct addrinfo *ai;
- int on;
- socklen_t onSize;
- int fd=-1;
-
- if (!(fai = I2AddrAddrInfo(addr, NULL, serv))) {
- return -2;
- }
-
- for (ai = fai; ai; ai = ai->ai_next) {
+static int OpenSocket(I2Addr addr, char* serv, int options) {
+ struct addrinfo *fai;
+ struct addrinfo *ai;
+ int on;
+ socklen_t onSize;
+ int fd = -1;
+
+ if (!(fai = I2AddrAddrInfo(addr, NULL, serv))) {
+ return -2;
+ }
+
+ for (ai = fai; ai; ai = ai->ai_next) {
+ // options provided by user indicate V6
#ifdef AF_INET6
- if (options & OPT_IPV6_ONLY) {
- if(ai->ai_family != AF_INET6)
- continue;
- }
+ if (options & OPT_IPV6_ONLY) { // If not an INET6 address,
move on
+ if(ai->ai_family != AF_INET6)
+ continue;
+ }
#endif
-
- if (options & OPT_IPV4_ONLY) {
- if(ai->ai_family != AF_INET)
- continue;
- }
-
- fd = socket(ai->ai_family,ai->ai_socktype,ai->ai_protocol);
-
-/*
- if (meta.family == 0)
- meta.family = ai->ai_family;
- */
-
- if (fd < 0) {
- continue;
- }
-
- on=1;
- if (setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on)) != 0) {
- goto failsock;
- }
-
+
+ if (options & OPT_IPV4_ONLY) { // options provided by user
indicate V4
+ if (ai->ai_family != AF_INET) // Not valid Inet
address family. move on
+ continue;
+ }
+
+ // create socket with obtained address domain, socket type
and protocol
+ fd = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
+
+ // socket create failed. Abandon further activities using
this socket
+ if (fd < 0) {
+ continue;
+ }
+
+ // allow sockets to reuse local address while binding unless
there
+ // is an active listener. If unable to set this option,
indicate failure
+
+ on = 1;
+ if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on))
!= 0) {
+ goto failsock;
+ }
+
+ // the IPv6 version socket option setup
#if defined(AF_INET6) && defined(IPPROTO_IPV6) && defined(IPV6_V6ONLY)
- if ((ai->ai_family == AF_INET6) && (options & OPT_IPV6_ONLY) &&
- setsockopt(fd,IPPROTO_IPV6,IPV6_V6ONLY,&on,sizeof(on)) != 0) {
- goto failsock;
- }
+ if ((ai->ai_family == AF_INET6) && (options & OPT_IPV6_ONLY)
&&
+
setsockopt(fd,IPPROTO_IPV6,IPV6_V6ONLY,&on,sizeof(on)) != 0) {
+ goto failsock;
+ }
#endif
-
- if (bind(fd,ai->ai_addr,ai->ai_addrlen) == 0) {
-
- if (!I2AddrSetSAddr(addr,ai->ai_addr,ai->ai_addrlen) ||
- !I2AddrSetProtocol(addr,ai->ai_protocol) ||
- !I2AddrSetSocktype(addr,ai->ai_socktype)) {
- log_println(1, "OpenSocket: Unable to set saddr in address record");
- return -1;
- }
- if (!I2AddrPort(addr)) {
- struct sockaddr_storage tmp_addr;
- socklen_t tmp_addr_len = sizeof(tmp_addr);
- I2Addr tmpAddr;
- if (getsockname(fd, (struct sockaddr*) &tmp_addr, &tmp_addr_len)) {
- return -1;
- }
- tmpAddr = I2AddrBySAddr(get_errhandle(), (struct sockaddr*) &tmp_addr, tmp_addr_len, 0, 0);
- I2AddrSetPort(addr, I2AddrPort(tmpAddr));
- I2AddrFree(tmpAddr);
- }
- if (!I2AddrSetFD(addr,fd,True)) {
- log_println(1, "OpenSocket: Unable to set file descriptor in address record");
- return -1;
- }
-
- break;
- }
-
- if (errno == EADDRINUSE) {
- /* RAC debug statemement 10/11/06 */
- onSize = sizeof(on);
- getsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, &onSize);
- log_println(1, "bind(%d) failed: Address already in use given as the reason, getsockopt() returned %d", fd, on);
- return -2;
- }
-
-failsock:
- /* RAC debug statemement 10/11/06 */
- log_println(1, "failsock: Unable to set socket options for fd=%d", fd);
- while((close(fd) < 0) && (errno == EINTR));
- }
-
- if (meta.family == 0)
- meta.family = ai->ai_family;
- return fd;
+ // end trying to set socket option to reuse local address
+
+ // try to bind to address
+ if (bind(fd, ai->ai_addr, ai->ai_addrlen) == 0) { //
successful
+
+ // set values in "addr" structure
+ if (!I2AddrSetSAddr(addr, ai->ai_addr, ai->ai_addrlen)
+ || !I2AddrSetProtocol(addr,
ai->ai_protocol)
+ || !I2AddrSetSocktype(addr,
ai->ai_socktype)) {
+ log_println(1,
+ "OpenSocket: Unable to set saddr
in address record");
+ return -1;
+ }
+ // set port if not already done, else return -1
+ if (!I2AddrPort(addr)) {
+ struct sockaddr_storage tmp_addr;
+ socklen_t tmp_addr_len = sizeof(tmp_addr);
+ I2Addr tmpAddr;
+ if (getsockname(fd, (struct sockaddr*)
&tmp_addr,
+ &tmp_addr_len)) {
+ return -1;
+ }
+ tmpAddr = I2AddrBySAddr(get_errhandle(),
+ (struct sockaddr*) &tmp_addr,
tmp_addr_len, 0, 0);
+ I2AddrSetPort(addr, I2AddrPort(tmpAddr));
+ I2AddrFree(tmpAddr);
+ }
+ // save socket file descriptor
+ if (!I2AddrSetFD(addr, fd, True)) {
+ log_println(
+ 1,
+ "OpenSocket: Unable to set file
descriptor in address record");
+ return -1;
+ }
+ // end setting values in "addr" structure
+
+ break;
+ }
+
+ // Address is indicated as being in use. Display actual socket options to user and return
+ if (errno == EADDRINUSE) {
+ /* RAC debug statemement 10/11/06 */
+ onSize = sizeof(on);
+ getsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on,
&onSize);
+ log_println(
+ 1,
+ "bind(%d) failed: Address already in use given as the reason, getsockopt() returned %d",
+ fd, on);
+ return -2;
+ }
+
+ // If setting socket option failed, print error, and try to close socket file-descriptor
+ failsock:
+ /* RAC debug statemement 10/11/06 */
+ log_println(1, "failsock: Unable to set socket options for
fd=%d", fd);
+ while ((close(fd) < 0) && (errno == EINTR))
+ ;
+ }
+
+ // set meta test's address domain family to the one used to create
socket
+ if (meta.family == 0)
+ meta.family = ai->ai_family;
+ return fd;
}

-/*
- * Function name: CreateListenSocket
- * Description: Creates the I2Addr structure with the listen socket.
- * Arguments: addr - the I2Addr structure, where listen socket should
+/**
+ * Createsthe I2Addr structure with the listen socket.
+ * @param addr the I2Addr structure, where listen socket should
* be added, or NULL, if the new structure should be
* created
- * serv - the port number
- * options - the binding socket options
- * buf_sixe - manually set the TCP send/receive socket buffer
- * Returns: The I2Addr structure with the listen socket.
+ * @param serv the port number
+ * @param options the binding socket options
+ * @param buf_size manually set the TCP send/receive socket buffer
+ * @returns I2Addr structure with the listen socket.
*/

-I2Addr
-CreateListenSocket(I2Addr addr, char* serv, int options, int buf_size)
-{
- int fd = -1;
- socklen_t optlen;
- int set_size;
-
- if (addr && (I2AddrFD(addr) > -1)) {
- log_println(1, "Invalid I2Addr record - fd already specified.");
- goto error;
- }
-
- if ((!addr) && !(addr = I2AddrByWildcard(get_errhandle(), SOCK_STREAM, serv))) {
- log_println(1, "Unable to create I2Addr record by wildcard.");
- goto error;
- }
-
- if (!I2AddrSetPassive(addr,True)) {
- log_println(1, "Unable to set passive mode in I2Addr record.");
- goto error;
- }
-
- fd = OpenSocket(addr, serv, options);
-
- if (fd < 0) {
- log_println(1, "Unable to open socket.");
- goto error;
- }
-
-/* Set sock opt code from Marion Nakanson
<
- * OHSU Advanced Computing Center
- * email on 2/19/09 correctly notes that setsockops must be made before open()
- * or listen() calls are made
- */
-
- optlen = sizeof(set_size);
- getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &set_size, &optlen);
- log_print(5, "\nSend buffer initialized to %d, ", set_size);
- getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &set_size, &optlen);
- log_println(5, "Receive buffer initialized to %d", set_size);
- if (buf_size > 0) {
- setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &buf_size, sizeof(buf_size));
- setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &buf_size, sizeof(buf_size));
- getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &set_size, &optlen);
- log_print(5, "Changed buffer sizes: Send buffer set to %d(%d), ", set_size, buf_size);
- getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &set_size, &optlen);
- log_println(5, "Receive buffer set to %d(%d)", set_size, buf_size);
- }
-
-
- if (listen(fd, NDT_BACKLOG) < 0) {
- log_println(1, "listen(%d,%d):%s", fd, NDT_BACKLOG, strerror(errno));
- goto error;
- }
-
- return addr;
-
-error:
- I2AddrFree(addr);
- return NULL;
+I2Addr CreateListenSocket(I2Addr addr, char* serv, int options, int buf_size) {
+ int fd = -1;
+ socklen_t optlen;
+ int set_size;
+
+ if (addr && (I2AddrFD(addr) > -1)) {
+ log_println(1, "Invalid I2Addr record - fd already
specified.");
+ goto error;
+ }
+
+ if ((!addr)
+ && !(addr = I2AddrByWildcard(get_errhandle(),
SOCK_STREAM, serv))) {
+ log_println(1, "Unable to create I2Addr record by wildcard.");
+ goto error;
+ }
+
+ if (!I2AddrSetPassive(addr, True)) {
+ log_println(1, "Unable to set passive mode in I2Addr
record.");
+ goto error;
+ }
+
+ // create and bind socket using arguments
+ fd = OpenSocket(addr, serv, options);
+
+ if (fd < 0) {
+ log_println(1, "Unable to open socket.");
+ goto error;
+ }
+
+ /* Set sock opt code from Marion Nakanson
<
+ * OHSU Advanced Computing Center
+ * email on 2/19/09 correctly notes that setsockops must be made before open()
+ * or listen() calls are made
+ */
+
+ optlen = sizeof(set_size);
+ // get send buffer size
+ getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &set_size, &optlen);
+ log_print(5, "\nSend buffer initialized to %d, ", set_size);
+
+ // get receive buffer size
+ getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &set_size, &optlen);
+ log_println(5, "Receive buffer initialized to %d", set_size);
+
+ // now assign buffer sizes passed as arguments
+ if (buf_size > 0) {
+ setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &buf_size, sizeof(buf_size)); // send buffer
+ setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &buf_size, sizeof(buf_size)); // receive buffer
+ // print values set to help user verify
+ getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &set_size, &optlen);
+ log_print(5, "Changed buffer sizes: Send buffer set to %d(%d),
",
+ set_size, buf_size);
+ getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &set_size, &optlen);
+ log_println(5, "Receive buffer set to %d(%d)", set_size,
buf_size);
+ }
+
+ // now listen on socket for connections, with backlog queue length = NDT_BACKLOG
+ if (listen(fd, NDT_BACKLOG) < 0) { // if listen returns value <0, then error
+ log_println(1, "listen(%d,%d):%s", fd, NDT_BACKLOG,
strerror(errno));
+ goto error;
+ }
+
+ return addr;
+
+// If error, try freeing memory
+ error: I2AddrFree(addr);
+ return NULL;
}

-/*
- * Function name: CreateConnectSocket
- * Description: Creates the connect socket and adds it to the I2Addr
+/**
+ * Create the connect socket and adds it to the I2Addr
* structure.
- * Arguments: sockfd - the target place for the socket descriptor
- * local_addr - the I2Addr structure with the local address
+ * @param sockfd target place for the socket descriptor
+ * @param local_addr I2Addr structure with the local address
* to bind the connect socket to
- * server_addr - the I2Addr structure with the remote
+ * @param server_addr I2Addr structure with the remote
* server address
- * options - the connect socket options
- * buf_size - manually set the TCP send/receive buffer size`
- * Returns: 0 - success,
+ * @param options connect socket options
+ * @param buf_size manually set the TCP send/receive buffer size`
+ * @return 0 - success,
* !0 - error code.
*/

-int
-CreateConnectSocket(int* sockfd, I2Addr local_addr, I2Addr server_addr, int options, int buf_size)
-{
- struct addrinfo *fai = NULL;
- struct addrinfo *ai = NULL;
- struct addrinfo *lfai = NULL;
- struct addrinfo *lai = NULL;
- socklen_t optlen;
- int set_size;
-
- assert(sockfd);
- assert(server_addr);
-
- if (!server_addr) {
- goto error;
- }
-
- if ((*sockfd = I2AddrFD(server_addr)) > -1) {
- return 0;
- }
-
- if (!(fai = I2AddrAddrInfo(server_addr, NULL, NULL))) {
- goto error;
- }
-
- for (ai=fai; ai; ai=ai->ai_next) {
+int CreateConnectSocket(int* sockfd, I2Addr local_addr, I2Addr server_addr,
+ int options, int buf_size) {
+ struct addrinfo *fai = NULL;
+ struct addrinfo *ai = NULL;
+ struct addrinfo *lfai = NULL;
+ struct addrinfo *lai = NULL;
+ socklen_t optlen;
+ int set_size;
+
+ assert(sockfd);
+ assert(server_addr);
+
+ if (!server_addr) {
+ goto error;
+ }
+
+ // already connected and bound
+ if ((*sockfd = I2AddrFD(server_addr)) > -1) {
+ return 0;
+ }
+
+ if (!(fai = I2AddrAddrInfo(server_addr, NULL, NULL))) {
+ goto error;
+ }
+
+ for (ai = fai; ai; ai = ai->ai_next) {
+
+ // options provided by user indicate V6
#ifdef AF_INET6
- if (options & OPT_IPV6_ONLY) {
- if(ai->ai_family != AF_INET6)
- continue;
- }
+ if (options & OPT_IPV6_ONLY) { // If not an INET6 address,
move on
+ if(ai->ai_family != AF_INET6)
+ continue;
+ }
#endif

- if (options & OPT_IPV4_ONLY) {
- if(ai->ai_family != AF_INET)
- continue;
- }
-
- *sockfd = socket(ai->ai_family,ai->ai_socktype,ai->ai_protocol);
- if (*sockfd < 0) {
- continue;
- }
-
- if (local_addr) {
- int bindFailed = 1;
- if (!(lfai = I2AddrAddrInfo(local_addr, NULL, NULL))) {
- continue;
- }
-
- for (lai=lfai; lai; lai=lai->ai_next) {
+ // options provided by user indicate V4
+ if (options & OPT_IPV4_ONLY) {
+ if (ai->ai_family != AF_INET) // NOT valid inet
address family. Move on.
+ continue;
+ }
+
+ // create socket with obtained address domain, socket type
and protocol
+ *sockfd = socket(ai->ai_family, ai->ai_socktype,
ai->ai_protocol);
+ if (*sockfd < 0) { // socket create failed. Abandon further activities using this socket
+ continue;
+ }
+
+ // local address has been specified. Get details and bind to this adderess
+ if (local_addr) {
+ int bindFailed = 1;
+ if (!(lfai = I2AddrAddrInfo(local_addr, NULL, NULL)))
{
+ continue;
+ }
+
+ // Validate INET address family
+ for (lai = lfai; lai; lai = lai->ai_next) {
#ifdef AF_INET6
- if (options & OPT_IPV6_ONLY) {
- if(lai->ai_family != AF_INET6)
- continue;
- }
+ if (options & OPT_IPV6_ONLY) {
+ if(lai->ai_family != AF_INET6)
+ continue;
+ }
#endif

- if (options & OPT_IPV4_ONLY) {
- if(lai->ai_family != AF_INET)
- continue;
- }
-
- if (bind((*sockfd), lai->ai_addr, lai->ai_addrlen) == 0) {
- bindFailed = 0;
- break; /* success */
- }
- }
-
- if (bindFailed == 1) {
- close((*sockfd)); /* ignore this one */
- continue;
- }
- }
-
-/* Set sock opt code from Marion Nakanson
<
- * OHSU Advanced Computing Center
- * email on 2/19/09 correctly notes that setsockops must be made before open()
- * or listen() calls are made
- */
-
- optlen = sizeof(set_size);
- getsockopt(*sockfd, SOL_SOCKET, SO_SNDBUF, &set_size, &optlen);
- log_print(5, "\nSend buffer initialized to %d, ", set_size);
- getsockopt(*sockfd, SOL_SOCKET, SO_RCVBUF, &set_size, &optlen);
- log_println(5, "Receive buffer initialized to %d", set_size);
- if (buf_size > 0) {
- setsockopt(*sockfd, SOL_SOCKET, SO_SNDBUF, &buf_size, sizeof(buf_size));
- setsockopt(*sockfd, SOL_SOCKET, SO_RCVBUF, &buf_size, sizeof(buf_size));
- getsockopt(*sockfd, SOL_SOCKET, SO_SNDBUF, &set_size, &optlen);
- log_print(5, "Changed buffer sizes: Send buffer set to %d(%d), ", set_size, buf_size);
- getsockopt(*sockfd, SOL_SOCKET, SO_RCVBUF, &set_size, &optlen);
- log_println(5, "Receive buffer set to %d(%d)", set_size, buf_size);
- }
-
- if (connect(*sockfd,ai->ai_addr,ai->ai_addrlen) == 0) {
- if(I2AddrSetSAddr(server_addr,ai->ai_addr,ai->ai_addrlen) &&
- I2AddrSetSocktype(server_addr,ai->ai_socktype) &&
- I2AddrSetProtocol(server_addr,ai->ai_protocol) &&
- I2AddrSetFD(server_addr,*sockfd,True)){
- return 0;
- }
- log_println(1, "I2Addr functions failed after successful connection");
- while((close(*sockfd) < 0) && (errno == EINTR));
- return 1;
- }
- }
-
-error:
- log_println(1, "Unable to create connect socket.");
- return -1;
+ if (options & OPT_IPV4_ONLY) {
+ if (lai->ai_family != AF_INET)
+ continue;
+ }
+
+ // bind to local address
+ if (bind((*sockfd), lai->ai_addr,
lai->ai_addrlen) == 0) {
+ bindFailed = 0; // bind successful
+ break; /* success */
+ }
+ }
+
+ // Failed to bind. Close socket file-descriptor and
move on
+ if (bindFailed == 1) {
+ close((*sockfd)); /* ignore this one */
+ continue;
+ }
+ } // end local address
+
+ /* Set sock opt code from Marion Nakanson
<
+ * OHSU Advanced Computing Center
+ * email on 2/19/09 correctly notes that setsockops must be made before open()
+ * or listen() calls are made
+ */
+
+ optlen = sizeof(set_size);
+ // get send buffer size for logs
+ getsockopt(*sockfd, SOL_SOCKET, SO_SNDBUF, &set_size,
&optlen);
+ log_print(5, "\nSend buffer initialized to %d, ", set_size);
+ // get receive buffer size for logs
+ getsockopt(*sockfd, SOL_SOCKET, SO_RCVBUF, &set_size,
&optlen);
+ log_println(5, "Receive buffer initialized to %d", set_size);
+
+ // now assign buffer sizes passed as arguments
+ if (buf_size > 0) {
+ setsockopt(*sockfd, SOL_SOCKET, SO_SNDBUF, &buf_size,
+ sizeof(buf_size));
+ setsockopt(*sockfd, SOL_SOCKET, SO_RCVBUF, &buf_size,
+ sizeof(buf_size));
+ // log values for reference
+ getsockopt(*sockfd, SOL_SOCKET, SO_SNDBUF, &set_size,
&optlen);
+ log_print(5, "Changed buffer sizes: Send buffer set to
%d(%d), ",
+ set_size, buf_size);
+ getsockopt(*sockfd, SOL_SOCKET, SO_RCVBUF, &set_size,
&optlen);
+ log_println(5, "Receive buffer set to %d(%d)",
set_size, buf_size);
+ }
+
+ // Connect to target socket
+ if (connect(*sockfd, ai->ai_addr, ai->ai_addrlen) == 0) {
+
+ // save server address values
+ if (I2AddrSetSAddr(server_addr, ai->ai_addr,
ai->ai_addrlen)
+ && I2AddrSetSocktype(server_addr,
ai->ai_socktype)
+ && I2AddrSetProtocol(server_addr,
ai->ai_protocol)
+ && I2AddrSetFD(server_addr, *sockfd,
True)) {
+ return 0;
+ }
+ // unable to save
+ log_println(1,
+ "I2Addr functions failed after successful
connection");
+ while ((close(*sockfd) < 0) && (errno == EINTR))
+ ;
+ return 1;
+ }
+ }
+
+ error: log_println(1, "Unable to create connect socket.");
+ return -1;
}

-/*
- * Function name: send_msg
- * Description: Sends the protocol message to the control socket.
- * Arguments: ctlSocket - the control socket
- * type - the type of the message
- * msg - the message to send
- * len - the length of the message
- * Returns: 0 - success,
- * !0 - error code.
+/**
+ * Sends the protocol message to the control socket.
+ * @param ctlSocket control socket
+ * @param type type of the message
+ * @param msg message to send
+ * @param len length of the message
+ * @return 0 on success, error code otherwise
+ * Error codes:
+ * -1 - Cannot write to socket at all
+ * -2 - Cannot complete writing full message data into socket
+ * -3 - Cannot write after retries
+ *
*/

-int
-send_msg(int ctlSocket, int type, void* msg, int len)
-{
- unsigned char buff[3];
- int rc, i;
-
- assert(msg);
- assert(len >= 0);
-
- /* memset(0, buff, 3); */
- buff[0] = type;
- buff[1] = len >> 8;
- buff[2] = len;
-
- for (i=0; i<5; i++) {
- rc = writen(ctlSocket, buff, 3);
- if (rc == 3)
- break;
- if (rc == 0)
- continue;
- if (rc == -1)
- return -1;
- }
- if (i == 5)
- return -3;
- for (i=0; i<5; i++) {
- rc = writen(ctlSocket, msg, len);
- if (rc == len)
- break;
- if (rc == 0)
- continue;
- if (rc == -1)
- return -2;
- }
- if (i == 5)
- return -3;
- log_println(8, ">>> send_msg: type=%d, len=%d, msg=%s, pid=%d", type, len, msg, getpid());
- return 0;
+int send_msg(int ctlSocket, int type, void* msg, int len) {
+ unsigned char buff[3];
+ int rc, i;
+ FILE * fp;
+
+ assert(msg);
+ assert(len >= 0);
+
+ /* memset(0, buff, 3); */
+ // set message type and length into message itself
+ buff[0] = type;
+ buff[1] = len >> 8;
+ buff[2] = len;
+
+ // retry sending data 5 times
+ for (i = 0; i < 5; i++) {
+ // Write initial data about length and type to socket
+ rc = writen(ctlSocket, buff, 3);
+ if (rc == 3) // write completed
+ break;
+ if (rc == 0) // nothing written yet,
+ continue;
+ if (rc == -1) // error writing to socket..cannot continue
+ return -1;
+ }
+
+ // Exceeded retries, return as "failed trying to write"
+ if (i == 5)
+ return -3;
+
+ // Now write the actual message
+ for (i = 0; i < 5; i++) {
+ rc = writen(ctlSocket, msg, len);
+ // all the data has been written successfully
+ if (rc == len)
+ break;
+ // data writing not complete, continue
+ if (rc == 0)
+ continue;
+ if (rc == -1) //error writing to socket, cannot continue
writing data
+ return -2;
+ }
+ if (i == 5)
+ return -3;
+ log_println(8, ">>> send_msg: type=%d, len=%d, msg=%s, pid=%d", type,
len,
+ msg, getpid());
+
+ protolog_sendprintln(type, msg, len, getpid(), ctlSocket);
+
+ return 0;
}

-/*
- * Function name: recv_msg
- * Description: Receives the protocol message from the control socket.
- * Arguments: ctlSocket - the control socket
- * type - the target place for type of the message
- * msg - the target place for the message body
- * len - the target place for the length of the message
- * Returns: 0 - success
- * !0 - error code.
+/**
+ * Receive the protocol message from the control socket.
+ * @param ctlSocket control socket
+ * @param typetarget place for type of the message
+ * @param msg target place for the message body
+ * @param len target place for the length of the message
+ * @returns 0 on success, error code otherwise.
+ * Error codes:
+ * -1 : Error reading from socket
+ * -2 : No of bytes received were lesser than expected byte count
+ * -3 : No of bytes received did not match expected byte count
*/

-int
-recv_msg(int ctlSocket, int* type, void* msg, int* len)
-{
- unsigned char buff[3];
- int length;
-
- assert(type);
- assert(msg);
- assert(len);
-
- if (readn(ctlSocket, buff, 3) != 3) {
- return -1;
- }
- *type = buff[0];
- length = buff[1];
- length = (length << 8) + buff[2];
- assert(length <= (*len));
- if (length > (*len)) {
- log_println(3, "recv_msg: length [%d] > *len [%d]", length, *len);
- return -2;
- }
- *len = length;
- if (readn(ctlSocket, msg, length) != length) {
- return -3;
- }
- log_println(8, "<<< recv_msg: type=%d, len=%d", *type, *len);
- return 0;
+int recv_msg(int ctlSocket, int* type, void* msg, int* len) {
+ unsigned char buff[3];
+ int length;
+ FILE * fp;
+
+ char *msgtemp = (char*) msg;
+
+ assert(type);
+ assert(msg);
+ assert(len);
+
+ // if 3 bytes are not explicitly read, signal error
+ if (readn(ctlSocket, buff, 3) != 3) {
+ return -1;
+ }
+
+ // get msg type, and calculate length as sum of the next 2 bytes
+ *type = buff[0];
+ length = buff[1];
+ length = (length << 8) + buff[2];
+
+ // if received buffer size < length as conveyed by buffer contents, then error
+ assert(length <= (*len));
+ if (length > (*len)) {
+ log_println(3, "recv_msg: length [%d] > *len [%d]", length,
*len);
+ return -2;
+ }
+ *len = length;
+ if (readn(ctlSocket, msg, length) != length) {
+ return -3;
+ }
+ log_println(8, "<<< recv_msg: type=%d, len=%d", *type, *len);
+
+ protolog_rcvprintln(*type, msgtemp, *len, getpid(), ctlSocket);
+
+ return 0;
}

-/*
- * Function name: writen
- * Description: Writes the given amount of data to the file descriptor.
- * Arguments: fd - the file descriptor
- * buf - buffer with data to write
- * amount - the size of the data
- * Returns: The amount of bytes written to the file descriptor
+/**
+ * Write the given amount of data to the file descriptor.
+ * @param fd the file descriptor
+ * @param buf buffer with data to write
+ * @param amount the size of the data
+ * @return The amount of bytes written to the file descriptor
*/

-int
-writen(int fd, void* buf, int amount)
-{
- int sent, n;
- char* ptr = buf;
- sent = 0;
- assert(amount >= 0);
- while (sent < amount) {
- n = write(fd, ptr+sent, amount - sent);
- if (n == -1) {
- if (errno == EINTR)
- continue;
- if (errno != EAGAIN) {
- log_println(6, "writen() Error! write(%d) failed with err='%s(%d) pic=%d'", fd,
- strerror(errno), errno, getpid());
- return -1;
- }
- }
- assert(n != 0);
- if (n != -1) {
- sent += n;
- }
- }
- return sent;
+int writen(int fd, void* buf, int amount) {
+ int sent, n;
+ char* ptr = buf;
+ sent = 0;
+ assert(amount >= 0);
+ while (sent < amount) {
+ n = write(fd, ptr + sent, amount - sent);
+ if (n == -1) {
+ if (errno == EINTR) // interrupted, retry writing
again
+ continue;
+ if (errno != EAGAIN) { // some genuine socket write
error
+ log_println(
+ 6,
+ "writen() Error! write(%d) failed
with err='%s(%d) pic=%d'",
+ fd, strerror(errno), errno,
getpid());
+ return -1;
+ }
+ }
+ assert(n != 0);
+ if (n != -1) { // success writing "n" bytes. Increment total bytes written
+ sent += n;
+ }
+ }
+ return sent;
}

-/*
- * Function name: readn
- * Description: Reads the given amount of data from the file descriptor.
- * Arguments: fd - the file descriptor
- * buf - buffer for data
- * amount - the size of the data to read
- * Returns: The amount of bytes read from the file descriptor.
+/**
+ * Read the given amount of data from the file descriptor.
+ * @param fd the file descriptor
+ * @param buf buffer for data
+ * @param amount size of the data to read
+ * @return The amount of bytes read from the file descriptor
*/

-int
-readn(int fd, void* buf, int amount)
-{
- int received=0, n, rc;
- char* ptr = buf;
- struct timeval sel_tv;
- fd_set rfd;
-
- assert(amount >= 0);
-
- FD_ZERO(&rfd);
- FD_SET(fd, &rfd);
- sel_tv.tv_sec = 600;
- sel_tv.tv_usec = 0;
-
- /* modified readn() routine 11/26/09 - RAC
- * addedd in select() call, to timeout if no read occurs after 10 seconds of waiting.
- * This should fix a bug where the server hangs at it looks like it's in this read
- * state. The select() should check to see if there is anything to read on this socket.
- * if not, and the 3 second timer goes off, exit out and clean up.
- */
- while (received < amount) {
- rc = select(fd+1, &rfd, NULL, NULL, &sel_tv);
- if (rc == 0) { /* A timeout occurred, nothing to read from socket after 3 seconds */
- log_println(6, "readn() routine timeout occurred, return error signal and kill off child");
- return received;
- }
- if ((rc == -1) && (errno == EINTR)) /* a signal was processed, ignore it */
- continue;
- n = read(fd, ptr+received, amount - received);
- if (n == -1) {
- if (errno == EINTR)
- continue;
- if (errno != EAGAIN)
- return -errno;
- }
- if (n != -1) {
- received += n;
- }
- if (n == 0)
- return 0;
- }
- return received;
-}
+int readn(int fd, void* buf, int amount) {
+ int received = 0, n, rc;
+ char* ptr = buf;
+ struct timeval sel_tv;
+ fd_set rfd;
+
+ assert(amount >= 0);
+
+ FD_ZERO(&rfd); // initialize with zeroes
+ FD_SET(fd, &rfd); //
+ sel_tv.tv_sec = 600;
+ sel_tv.tv_usec = 0;
+
+ /* modified readn() routine 11/26/09 - RAC
+ * addedd in select() call, to timeout if no read occurs after 10 seconds of waiting.
+ * This should fix a bug where the server hangs at it looks like it's in this read
+ * state. The select() should check to see if there is anything to read on this socket.
+ * if not, and the 3 second timer goes off, exit out and clean up.
+ */
+ while (received < amount) {
+
+ // check if fd+1 socket is ready to be read
+ rc = select(fd + 1, &rfd, NULL, NULL, &sel_tv);
+ if (rc == 0) { /* A timeout occurred, nothing to read from socket after 3 seconds */
+ log_println(
+ 6,
+ "readn() routine timeout occurred, return error signal and kill off child");
+ return received;
+ }
+ if ((rc == -1) && (errno == EINTR)) /* a signal was processed, ignore it */
+ continue;
+ n = read(fd, ptr + received, amount - received);
+ if (n == -1) { // error
+ if (errno == EINTR) // interrupted , try reading again
+ continue;
+ if (errno != EAGAIN) // genuine socket read error,
return
+ return -errno;
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/src/network.h Mon Apr 6 12:39:53 2009
+++ /trunk/src/network.h Mon Apr 30 13:46:39 2012
@@ -1,4 +1,4 @@
-/*
+/**
* This file contains the definitions and function declarations to
* handle network related stuff.
*
@@ -17,9 +17,9 @@
#define OPT_IPV6_ONLY 1
#define OPT_IPV4_ONLY 2

-
I2Addr CreateListenSocket(I2Addr addr, char* serv, int options, int buf_size);
-int CreateConnectSocket(int* sockfd, I2Addr local_addr, I2Addr server_addr, int option, int buf_sizes);
+int CreateConnectSocket(int* sockfd, I2Addr local_addr, I2Addr server_addr,
+ int option, int buf_sizes);
int send_msg(int ctlSocket, int type, void* msg, int len);
int recv_msg(int ctlSocket, int* type, void* msg, int* len);
int writen(int fd, void* buf, int amount);
=======================================
***Additional files exist in this changeset.***


  • [ndt-dev] [ndt] r768 committed - Merging in branch kkumar_code_organize into trunk. This branch has cod..., ndt, 04/30/2012

Archive powered by MHonArc 2.6.16.

Top of Page