modified files:
--------------
Added four new files in newly created proxy directory.
LSL Support for new application is added in lslproto.h
Analysing of IP_PACKET is done in iprx.c
Functions are added in tcputil.c udprx.c and wanconf.c

iprx.c
iptx.c
tcputl.c
udprx.c
wanconf.c
lslproto.h
vnvram.h


Sachin, 23rd Dec, 1997
        Made changes to reset the idle timer of even the control connection
descriptor if there is data on the data connection.

Sachin, 09/01/1998
------------------
        FTP to not always use the same port if it is the same workstation.
But control and data connections are made sure to use the WAN port.
        While reading the applications, just set the same_port_required
        field to FALSE for FTP.
. Introduced Load balancing thru' a symbol in KPPP.H
. The number_of_connections field, that was being neglected is taken care of now.
. The policy on whether to use the dial-triggered port or some active port
  is decided based on the application. In case of WEB, while we trigger the
  dialing of a fresh port, we use an existing active port. In case of FTP,
  we go ahead and use the dial-triggered port.


TODO List :
----------
        Places where you have NUMBER_OF_PROXY_PORTS, change it to
some nvram variable that gives the number of wan ports.



Sudha 10 Nov 1998
-----------------
**** proxy.c 
    * in get_least_loaded_port function, if mlppp, port number returned
      is the bundle number of the link.
	 * changes for dns caching also.
 
**** change in c:\rtrware\applicat\proxy\pr_timer.c in process_total_number_of
_hosts_and_trigger , do_not_allocate_this_port check has been introduced.
This is for link control problem.

* In proxyrb.c ( proxy_RB_demo_search function, if Tree == NULL condition
  has not been checked due to which proxy used to crash if proxy application
  entries are zero ).

Sudha 18 Dec 1998
-----------------
* Initial need to dial out:
---------------------------
** Initial need to dial out set to false & if demand given to trigger for 
the first time to dial is other than icmp.(ping)
*** Changes in proxy.c in get_least_loaded_port.Check for is_triggering_is_needed
is introduced there.

* Link control problem : 
------------------------
** Based on configured number of connections & hosts, when to bring up port
2 & 3 of wan & when not to bring them & thru which port, the connections
should go thru, if any demand comes from the client.
*** changes in proxy.c,
					pr_init.c,
					pr_util.c,
					pr_timer.c,
					linkctrb.c files.
*** Link control based on connections -> For icmp requests, no. of 
    connections are not incremented & while bringing the port down also, 
    not decrementing the connections if protocol is ICMP.
*** Link control based on hosts -> resetting the link control timer 
    for each & every packet so that if no packet is being detected on
    the particular client continuously for say some 3 minutes ( max link
    ctrl time) then no. of hosts can be decremented.
*** While bringing down the port ( ppp_port_down_by_no_demand, ip_port_down)
    deleting the connections & hosts going thru that particular port.          

Sudha 01 April 1999
-------------------
Bug1 
****
if pasv ftp, ctrl connection not being associated with data connection &
so if the file transfer goes beyond the idle timeout time, ctrl connection
descriptor will be deleted & so after the file transfer is completed, it
searches for the ctrl conn descriptor, to close that file transfer & it
fails.

Fix for this bug
****************
Now, even for pasv ftp, ctrl connection is being associated with the
corresponding data connection & so whenever any packet comes in that
data connection, both ctrl conn as well as data conn, idle_timer has
been re-initialized.

Modified files : proxy.c, proxyrb1.c, pr_util.c, pr_timer.c,
					  kproxy.h, vproxstr.h, proip.h
 
Proxy.c
-------
1. In get_free_proxy_server_info_ptr, destination_port has been added to each
   & every new ptr_proxy_info.
2. For each & every new ptr_proxy_info, proxy_rb_pasv_ftp_ctrl_client_descriptor
   _search function is being called.It's prototype is also being declared in 
	this file.
3. In process_proxy_response_packet, while calling, add_passive_port_to_
   application, its return type is changed from void to USHORT & the same
	pasv_port has been updated in ptr_proxy_info_ptr.
4. few prints has been added under #ifdef CTRL_DEBUG.

Proxyrb1.c
----------
1. proxy_rb_pasv_ftp_ctrl_client_descriptor_search function has been introduced,
   in which if the client_ip_address, destination_address & the dest_port of
   the new descriptor matching with already existing descriptor's 
	client_ip_addr, destination_address & pasv_port, then that matching 
   descriptor is nothing but the ftp_command_descriptor for this data_descriptor
	& so association has to be made for both for its command & data descriptor,
	resp.

vproxstr.h
----------
In proxy_server_info struct var, one USHORT pasv_port has been introduced newly.

kproxy.h
--------
CTRL_DEBUG has been # defined & in pr_timer.c few printfs has been introduced
under #ifdef CTRL_DEBUG.			  ----------

pr_util.c
---------
The function add_passive_port_to_application_list return type has been modified
from void to USHORT.The same change has been done in proip.h file.
																	  -------

Bug2
****
In pptp.c, in check_for_pptp_client_packet_and_process & also in check_for
_pptp_server_packet_and_process, while getting destination & source port of
the packet rxed, by calling the function, get_tcp_port_number_from_ip_packet,
source port has to be passed as pass_by reference & not as pass_by_value.

Fix is done for the same above bug in pptp.c as well as in check_for_pptp_
server_packet_and_process, the checking condition of "if ( source_port !=
PPTP_APPLICATION_PORT ), return;" has been introduced correctly.


-----------------------------------------------------------------------------
          Name of Engineer : sudha
                      Date : 12-Nov-1999
            Files modified : kproxy.h, vproxstr.h, pr_init.c, pr_util.c, pr_timer.c	
Problem/change description : If for some reason, a specific domain name filter
									  is not resolved for the first time, we were not
									  trying it repeatedly. Fix for that. Now, we will
									  try to resolve all the unresolved domain name 
									  filters for specific number of times. Right now,
									  it is 20 times.		

-----------------------------------------------------------------------------

