verinec.netsim.components.layers
Class NetworkLayer

java.lang.Object
  extended by desmoj.core.simulator.NamedObject
      extended by desmoj.core.simulator.ModelComponent
          extended by verinec.netsim.components.layers.abstractNetworkLayer
              extended by verinec.netsim.components.layers.NetworkLayer
All Implemented Interfaces:
Observer, Subject

public class NetworkLayer
extends abstractNetworkLayer

A NetworkLayer (Layer 3 in the OSI Model).

Version:
$Revision:835 $
Author:
Dominik Jungo

Field Summary
private  AddressTable arpTable
           
private  Vector failed
           
private  Vector gateways
           
private  Vector lowerobserver
           
 
Constructor Summary
NetworkLayer(Model owner, EventProcessor processor)
          Creates a new NetworkLayer
 
Method Summary
 void addArpEntry(IAddress address1, IAddress address2)
          Adds an arp entry to the Layers ''arp database''
 void addArpEntry(IAddress address1, IAddress address2, double time)
          Adds an arp entry to the Layers ''arp database'' at a given time
 void addFailed(IAddress address)
          Adds an address that failed in arp
 void addGateway(IPAddress address)
           
 void addObserverElement(Object arg0)
          Adds an Observer (layer 2) to the list of observers.
 boolean arpFailed(IAddress address)
          decides if the arp failed for the given addess
 void attachLower(Observer observer)
          Attaches a Observer to this Subject
 void forward(Packet packet, int i, Event logevent)
           
 AddressTable getArpTable()
          gets the Layers a arp table
 IPAddress getGatewayFor(IPAddress address)
           
 IPAddress getInterfaceFor(IPAddress dstAddress)
           
 Enumeration observerElements()
          gets the list of observers from the lower layer
 void removeFailed(IAddress address)
          removes an address from the list of failed arp
 boolean removeObserver(Object arg0)
          remove a observer from the lower observers list
 void sendDown(Packet packet, double timeoffset, ModelComponent sender, ILogger logger)
          sends a packet down to the physical layer
 void sendDownBoradcast(Packet packet, double timeoffset, ModelComponent sender, ILogger logger)
           
 void setArpTable(AddressTable arpTable)
          sets the Layers ARP table
 
Methods inherited from class verinec.netsim.components.layers.abstractNetworkLayer
addAddress, addProcessor, addresses, attachUpper, compareAddress, detachLower, detachUpper, getDownEvent, getFirstAddress, getLayerName, getLowerobserver, getNode, getProcessor, getUpEvent, processorelements, sendDown, sendUp, setNode
 
Methods inherited from class desmoj.core.simulator.ModelComponent
current, currentEntity, currentEvent, currentModel, currentSimProcess, currentTime, debugIsOn, debugOff, debugOn, epsilon, getModel, isExperimentCompatible, isModelCompatible, sendDebugNote, sendMessage, sendTraceNote, sendWarning, skipTraceNote, skipTraceNote, traceIsOn, traceOff, traceOn
 
Methods inherited from class desmoj.core.simulator.NamedObject
getName, getQuotedName, rename, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

arpTable

private AddressTable arpTable

failed

private Vector failed

lowerobserver

private Vector lowerobserver

gateways

private Vector gateways
Constructor Detail

NetworkLayer

public NetworkLayer(Model owner,
                    EventProcessor processor)
Creates a new NetworkLayer

Parameters:
owner - a Model
processor - a processor that acts in this layer
Method Detail

addArpEntry

public void addArpEntry(IAddress address1,
                        IAddress address2)
Adds an arp entry to the Layers ''arp database''

Parameters:
address1 - a key address
address2 - an addess associated to the key

addArpEntry

public void addArpEntry(IAddress address1,
                        IAddress address2,
                        double time)
Adds an arp entry to the Layers ''arp database'' at a given time

Parameters:
address1 - a key address
address2 - an addess associated to the key
time - a time value

addFailed

public void addFailed(IAddress address)
Adds an address that failed in arp

Parameters:
address - an address that failed in arp

addObserverElement

public void addObserverElement(Object arg0)
Adds an Observer (layer 2) to the list of observers.

Parameters:
arg0 - an Observer

attachLower

public void attachLower(Observer observer)
Description copied from interface: Subject
Attaches a Observer to this Subject

Specified by:
attachLower in interface Subject
Overrides:
attachLower in class abstractNetworkLayer
Parameters:
observer - The observing Object
See Also:
abstractNetworkLayer.attachLower(verinec.netsim.components.layers.Observer)

getArpTable

public AddressTable getArpTable()
gets the Layers a arp table

Returns:
the Layers a arp table

observerElements

public Enumeration observerElements()
gets the list of observers from the lower layer

Returns:
the list of observers from the lower layer

removeFailed

public void removeFailed(IAddress address)
removes an address from the list of failed arp

Parameters:
address - an address that failed to resolve with arp

removeObserver

public boolean removeObserver(Object arg0)
remove a observer from the lower observers list

Parameters:
arg0 - an observer
Returns:
true if the Vector contained the specified element

arpFailed

public boolean arpFailed(IAddress address)
decides if the arp failed for the given addess

Parameters:
address - an address
Returns:
true if the arp failed for the given addess

sendDown

public void sendDown(Packet packet,
                     double timeoffset,
                     ModelComponent sender,
                     ILogger logger)
sends a packet down to the physical layer

Parameters:
packet - a packet
timeoffset - a time offset
sender - sender of this packet
logger - a logger

sendDownBoradcast

public void sendDownBoradcast(Packet packet,
                              double timeoffset,
                              ModelComponent sender,
                              ILogger logger)

setArpTable

public void setArpTable(AddressTable arpTable)
sets the Layers ARP table

Parameters:
arpTable - a srp table

addGateway

public void addGateway(IPAddress address)

getGatewayFor

public IPAddress getGatewayFor(IPAddress address)

forward

public void forward(Packet packet,
                    int i,
                    Event logevent)

getInterfaceFor

public IPAddress getInterfaceFor(IPAddress dstAddress)

Copyright © 2005 Verinec, DIUF