@Override
	public void receivePacket(Packet inPacket, String inInterface) throws LowLinkException {
		
		if(inPacket instanceof IP_packet && !(inPacket instanceof ARP_packet)){
			try{
				if(this.getNetworkInterface(inInterface).getNAT() == NetworkInterface.INSIDE_NAT){
					// mark packet
					((IP_packet) inPacket).NatInsideMark = true;
					Simulation.addLayerInfo(getClass().getName(), getName(), "IP Packet", "Network", 
							"Marked packet as possible inside NAT candidate.");
				}else if(this.getNetworkInterface(inInterface).getNAT() == NetworkInterface.OUTSIDE_NAT){
					((IP_packet) inPacket).NatOutsideMark = true;
					inPacket = nat.NAT_outside((IP_packet) inPacket);
				}
			}catch(InvalidNetworkInterfaceNameException e){ 
			}
		}
		
		if(NodeProtocolStack != null) 
			NodeProtocolStack.receivePacket(inPacket, inInterface);
	}