J-Sim Official

Patches

July 5, 2006

This page contains links to patches which are upgrades to minor releases or minor fixes over releases.

Installation of patches is straightforward: uncompress the patch directly on top of where J-Sim is installed and recompile the sources if necessary.

  • These are not really a patch.  These are the Jacl source archives (modified for J-Sim), for those who want to play with the Tcl interpreter.  One should install the archive in the same directory as the J-Sim package.
    • The ANT build file for compiling the Jacl sources with the J-Sim sources.
    • Modified Jacl 1.3.1 sources, 521KB, 02/03/2004.  The binary is included in J-Sim v1.3 (as jars/tcl.zip).  This is usable with J-Sim v1.2.1 but the exception handling is not compatible so it will not show much information of an exception.
    • Modified Jacl 1.2.6 sources, 473KB, 04/25/2003.  The binary is already included in J-Sim release v1.2.1 (as jars/tcl.zip).
  • Patches for GUI Editor v0.04
    • v0.04-patch1, 46KB, 04/07/2003
      • fix a possible deadlock at start-up on some systems.
  • Patches for Sensorsim Package
    • patch-sensorsim.tgz, 51KB, 01/18/2005
      • include a localization protocol and a directed diffusion protocol.
      • Class additions and modification are found at here.
  • Patches for J-Sim v1.3
    • v1.3-patch4, 348KB, 07/05/2006, includes previous patches, change log
    • v1.3-patch3, 207KB, 05/14/2004, includes previous patches
      • drcl.comp.lib.bytestream.ByteStreamPeer: added sendWait(), recvWait(), sendNotify() and recvNotify() for subclassing for non-simulation thread
      • revised code for running real application in simulation threads, this involved with many classes in different runtime packages:
        • drcl.inet.socket.Launcher:
          • added static Thread newThread(Runnable)
          • added MyRunnable and started application in MyRunnable in simulation thread
        • drcl.inet.socket.JSimSocketImpl: added MyByteStreamPeer to handle non-simulation thread
        • drcl.comp.Task: added a new field "threadGroup"
        • drcl.comp.TaskSpecial: added a constructor to accept ThreadGroup as argument
        • drcl.comp.TaskNotify: added a static MARK and assign this to every instance's threadGroup; this way simulation thread's code of telling special tasks becomes simple: just test if Task's threadGroup != null
        • drcl.comp.ACARuntime: added a new addRunnableAt() to accept ThreadGroup as argument
        • drcl.comp.ARuntime:
          • newThread() added ThreadGroup as argument
          • added grabOne(ThreadGroup) and immediatelyStart(Task)
        • drcl.comp.AWorkerThread: clean up run() and added code to handle task whose threadGroup is not thread's
        • drcl.sim.event.SESimulator:
          • newThread() added ThreadGroup as argument
          • added grabOne(ThreadGroup) and immediatelyStart(Task)
        • drcl.sim.event.SEThread: clean up run() and added code to handle task whose threadGroup is not thread's
        • script/drcl/inet/socket/HelloServer.java: use drcl.inet.socket.Launcher.newThread() instead of java.lang.Thread
      • drcl.inet.contract.DatagramContract:
        • add code to implement drcl.net.PacketWrapper and drcl.data.Countable
        • updated script/drcl/inet/dvmrp/test_igmp.trace and script/drcl/inet/queue/*.trace
      • drcl.inet.mac:
        • NodePositionTracker, MobilityModel: added info()
        • WirelessPhy: added setBandwidth() and more debug info to the case of negative gap time; added getEnergyModel()
        • NodeChannelContract, MacPhyContract: made Message implement drcl.data.Countable so that raw bit rate can be collected by TrafficMonitor
      • drcl.inet.protocol.dv.DV:
        • _updateNeighbors(): relax the condition on checking route entry to be distributed by DV
        • _routingUpdateHandler(): make it more strict the condition on checking route entry to be handled by DV (only those created by DV can be handled by DV later)
      • fix a bug in drcl.inet.transport.TCPSink.recv(): may receive a packet whose seq_ is smaller than rcv_nxt but it contains new bytes due to retransmission of several small messages in one segment and some of the messages have been received before
      • fix a bug in drcl.comp.lib.bytestream.ByteStreamPeer.handle(): pendingReceive.buffer may be null if caller specifies a null byte array to receive
      • Classes are revised to be compatible with J2SDK1.5:
        • drcl.comp: ARuntime, ForkManagerLocal
        • drcl.comp.tool: ComponentTester, HistogramPlotter, Plotter
        • drcl.inet.tool.routing_msp
        • drcl.net.graph.ShortestPathTree
        • drcl.net.traffic.tsCDSmooth
        • drcl.sim.event.SESimulator
        • drcl.intserv.Scheduler
        • drcl.intserv.scheduler.admission_PTSP, admission_DCTS, scheduler_SP
      • drcl.ruv.Dterm: added minimize() and restore()
      • drcl.comp.tool.Plotter: added hide()/hideAll()
      • drcl.net.traffic:
        • TrafficSourceComponent.info(): add birthTime printout
        • tsPacketTrain.info(String): add prefix_ in printout
      • drcl.net.traffic.ts*: all TrafficSourceComponent's added reschedule() to allow the parameters of a traffic source to be changed online and the next packet (pakcet that has been scheduled) to be rescheduled accordingly
      • drcl.data: added XYDataInterface; made XYData implement it
      • drcl.comp.tool: made Plotter and PlotPlan deal with XYDataInterface
      • drcl.inet.socket.TCP_socket: add code to do exponential backoff for SYN retransmissions
    • v1.3-patch2, 82KB, 03/16/2004, enhancements and a correction over a fix in patch1 (includes patch1)
      • drcl.inet.NodeBuilder.loadmap(): add back code to deal with the option of using default "up" port by specifying "-" as port ID in the node map
      • drcl.comp.lib.bytestream:
      • ByteStreamContract: added "STOP" command; also in ByteStreamConstants
      • ByteStreamPeer: interrupt sending when STOP command is received; added DONT_THROW_EXCEPTION; enclose IO exception thrown in another IO exception as cause to better locate where these exceptions occur.
      • drcl.inet.transport.TCP: move state check from snd_packet() to timeout(); according to RFC2988, rtxcur_init: changed from 6.0 to 3.0, smallest rto (in rxt_timer()): changed from 2*t_grain to 1.0 second; added set/getMaxRetransmissionsAllowed(): when max is reached, TCP sends a STOP command 0 or negative for unlimited retrans.
      • drcl.ruv: Term: added set/getMaxNumberOfLines() for max # of lines that can be buffered in the terminal; default is 500 lines; Dterm: made conform to the maxNumberOfLines property
    • v1.3-patch1, 53KB, 03/05/2004, adds a few enhancements and adjustments
      • drcl.comp.lib.bytestream.ByteStreamPeer: added getCurrentReceiveBufferOccupancy()
      • drcl.inet.socket: added SocketListener to be notified of byte stream receiving events; InetSocket: added registerListener(); SocketMaster: added code for SocketListener callback
      • drcl.inet.InetUtil
      • added connectNeighbors()
      • added traceRoute/traceRouteInObj(Node, Node, long) to allow route tracing to nodes with multiple addresses
      • drcl.inet.NodeBuilder.loadmap(): allow application to be connected to an arbitrary (non-number) up port of the transport
      • drcl.comp.Port._getPeers(): should include ancestor ports
      • drcl.inet.TraceRT: remove synchronized call and add code to output result through output@ port (asynchronously); bookkeep pending requests in order to calculate pkt traversal time
      • drcl.inet.TraceRTPkt: add incomingIf to addHop()
      • drcl.inet.Node.traceRoute(): revised accordingly
      • drcl.inet.core.PktDispatcher: add incomingIf to TraceRTPkt; for TraceRTPkt, use the destination field as the source when sending back response instead of the default node address
  • Patches for J-Sim v1.2.1 (JavaSim v1.2.1)
    • v1.2.1-patch10, 275KB, 01/14/2004, includes all previous patches
      • drcl.inet.socket: (fixes over previous patch)
        • TCP_socket: added a PRE_LISTEN state, deal with it for racing between ACCEPT and SYN packet handling
        • TCP_full: when setting up loop-back request and before entering TCP_socket.dataArriveAtUpPort(), set TCP_socket's state to PRE_LISTEN
        • drcl.inet.transport.TCP.info(): add code to deal with "state" out of STATES's bound
        • tested with script/drcl/inet/socket/sockettest4.tcl
    • v1.2.1-patch9, 256KB, 11/21/2003, includes all previous patches
      • drcl.inet.socket:
        • SocketContract/SocketConstants: added LISTEN type and message construct
        • InetSocket/SocketMaster: implemented listen()
        • TCP_full:
          • HalfTCPKey added "forBuffer"; mapHalfTCP shared by halfTCP and request buffer
          • added setRequestBuffer(...), getRequestBuffer() and related code to add request to the buffer
          • loop back queued request when accept command arrives
          • rewrite dataArriveDownPort() to include processing of looped-back request
          • use HashMap instead of Hashtable
        • test script: script/drcl/inet/socket/sockettest4.tcl
      • drcl.util.queue:
        • added FiniteQueue, FiniteQueueImpl, FiniteFIFOQueue
    • v1.2.1-patch8, 230KB, 10/16/2003, includes all previous patches
      • drcl.net.graph.*: added readers for topologies in the Brite and ALT formats.
      • drcl.inet.InetUtil: added getAdjMatrixFromFile(String) to get adjMatrix from a topology file
    • v1.2.1-patch7, 223KB, 08/26/2003, includes all previous patches
      • improved drcl.ruv:
        • added TclGateway to access RUV with Tcl commands in other shell environment such as ShellPython
        • added WaitUntil(Shell, String) and modified wait_until in drcl.tcl to use that, now wait_until has no restriction on whether it is executed in nested commands
        • modified Shell.eval() and alike so that they return Object instead of String as results
        • exception handling is rewrote with ShellEvalException; make Shell throw appropriate exception when parsing/evaluation error occurs
        • added StackTraceFilter (Shell implements) to make stack trace print-out more compact and relevant
      • fixed drcl.inet.InetUtil._setupInterfaceInfo(): modified to use Port.getAncestors() instead of getPeers()
    • v1.2.1-patch6, 32KB, 08/11/2003
      • added drcl.data.NumberObj; modified IntObj, LongObj and DoubleObj
      • added drcl.comp.tool.Countable,RunningAverage for calculating running avg
      • removed default Random in drcl.net.traffic.TrafficSourceComponent and
        added setSeed(seed) in reset(); subclasses are modified accordingly including
        tsExpOnOff, tsFixedPoints, tsParetoOnOff, tsPeakRate
      • fixed a bug in TrafficAssistant where it didn't include package name when
        looking for matching traffic source component
      • fixed a bug in drcl.inet.core.ni.DropTailPointopointNI where some queue length
        events were not reported through .q@ port
      • added script/drcl/net/mm1.tcl, an example of M/M/1 queue
    • v1.2.1-patch5, 34KB, 07/10/2003
      (The two bugs below affect the applications that change component
      connections at run time.)
      • fix a bug in drcl.comp.Component._duplicateIn() and _duplicateOut()
        where pclone_'s wires should be disconnected first in case wires exist before
        the duplicate operation.
      • fix a bug in drcl.comp.Wire._removeInAll() and _removeOutAll() that stops
        from processing along the port linked list.
      (The changes below enhance the APIs for getting port/connection information)
      • added drcl.comp.Component.isDirectlyRelatedTo(Component)
      • drcl.comp.Port:
        • extending the definition of a shadow port to any "ancestor" component;
          use it to check shadow connection
        • several methods are revised: getPeers(), getInPeers(), getOutPeers(),
          getShadows(), getInShadows(), getOutShadows()
        • added getConceptualInPeers()
        • added getAncestors(), getInAncestors(), getOutAncestors()
      • drcl.comp.Wire: added getRealPorts(), getRealInPorts(), getRealOutPorts(),
        getShadowPorts(), getShadowInPorts(), getShadowOutPorts(),
        getRealPortsExcept(), getShadowPortsExcept()
    • v1.2.1-patch-applet, 450KB, 06/02/2003
      • (experimental) fix in drcl.ruv.* and tcl.lang.* to make J-Sim run in applets.
    • v1.2.1-patch4, 57KB, 04/30/2003
      •  fix a bug in drcl.inet.protocol.ospf.OSPF which prevents neighbor state's transition from "loading" to "full".
    • v1.2.1-patch3, 49KB, 02/14/2003
      • fix a bug in drcl.sim.event.SEThread.lock() which may cause NullPointerException when Component.lock() is invoked
      • fix a bug in drcl.inet.transport.TCPSink which fails TCP connection when the receiving buffer is overflowed at the arrival of last outstanding segment
      • add drcl.util.scalar.LongSpace.getLongInterval(int)
      • add drcl.util.scalar.IntSpace.getIntInterval(int)
    • v1.2.1-patch2, 28KB, 01/13/2003
      • fix drcl.inet.core.PktDispatcher's VIF checking
      • can be installed independently from v1.2.1-patch1.
    • v1.2.1-patch1, 24KB, 01/08/2003
      • fix minor cases where a disabled component may still be able to receive.
  • Patches for J-Sim v1.2 (JavaSim v1.2)

~ END ~