port[0].path_cost is a long.
number_of_hash_table_entries is a long.
port[0].wan_port is enum
port[0].token_ring is enum
port[0].port_id.priority is a byte.
---------------------------------------------------------------------
Version 2.16 changes made

Fixes and changes done to code by Sanjay
----------------------------------------

1. Changed DEFS.H contents.
2. MACBRRX.C, in the send_packet() call in the conditional include 
   (SIMPLE_BRIDGE) lines, included the first parameter that was not present.
   Also noted that using SIMPLE_BRIDGE will not bridge at all (some code
   seems to be missing and the port_number usage seems to be wrong). So
   decided not to use the SIMPLE_BRIDGE #define. Spanning tree can be 
   disable using the configuration itself.
3. In macbrcfg.c, changed three casts that were generating compiler warnings
   in the function mac_bridge_control() to use the proper types for casting.
4. #if-ed out the BIG_ENDIAN stuff from KMACBR.H as the same is included
   from some global include file.
5. In MACBSNMP.C, in the "for" loop in get_spanning_tree_mib_variable(),
   included a cast to the right type for the initialisation to remove a
   compiler warning.
6. Put in a few printf's that will need to be removed.
7. Things generally started working by adding the lines 
	PPP Port STP = 00,enabled
	PPP Port STP = 01,disabled
	PPP Port STP = 02,disabled
   to the PPP section in the config files.
8. Changed send_mac_bridge_packet()'s send_packet() routine to not include
   sizeof(CRC) in the packet sent.
9. Changed mac_bridge_control() in MACBRCFG.C to use BYTE_ENUM instead of
   simply 'enum' for the 3rd case (GET_PROTOCOL_STACK_TYPE). Bridging 
   started working after this change.
10. MACBRCFG.C, mac_bridge_control(), put in a cast 'enum BOOLEAN' for
    the 1st case ' = (cast) stp_class.enabled';
11. MACBRCFG.C, mac_bridge_control(), in all cases, put in casts (specially
    related to the BYTE_ENUM business) to match with what the LSL code
    expects for 'parameter_1'.
12. MACBRSPN.C, initialize_mac_bridge_data_structures(), put in a BYTE_ENUM
    style cast for 
    stp_class.bridge_configuration_BPDU[port_number].LLC_header.**** fields.
13. MACBRSPN.C, put in a few more casts before the TOPOLOGY_CHANGE constants.
14. Put in a file MACBRFLT.C which contains the stp_filter() custom routine
    to filter incoming packets.
14. Moved the code calling stp_filter() in MACBRRX.C to after the filtering
    database table is updated. This ensures that filtering will not lock
    out updation of the filtering table database. Accordingly move the
    code updatiung the 'dot1dTpPortInFrames' statistics count.
15. changed kmacbr.h for #define	MULTICAST_BROADCAST_MASK_BIT	0x01000000 for
		BIG_ENDIAN			sridhar 30-9-1995
16. in add_bridge_addresses_to_static_forwarding_table (void) macbrdb.c the 
		static addr for different ports was being added on with 0-based changed it
		to 1 based in 
		add_entry_to_filtering_database (mac_address._ushort,mac_address._ulong,spanning_tree_port_number + 1 ,PERMANENT_TABLE_ENTRY); sridhar 4-10-95


/* Sanjay 11/Jan/96 -- changes for proper SNMP support */
Removed old VMACSNMP.H and MACBSNMP.C files and added in a new set.
In kmacbr.h in enum FD_TABLE_ENTRY_TYPE, reordered SNMP type entries to
   match with MIB-II info.
Included the line
	stp_class.port[port_number].dot1dStpPortEnable = SNMP_BOOLEAN_ENABLED;
   in initialize_port() in macbrspn.c
Included the line
	stp_class.port[port_number].dot1dStpPortEnable = SNMP_BOOLEAN_DISABLED;
   in disable_port() in macbrmgr.c
The above two changes required the inclusion of vlslproto.h in the macbrmgr.c
file.
In macbrmgr.c, modified the set_bridge_priority() function to accept
   a USHORT instead of a BRIDGE_IDENTIFIER. modified prototypes suitably
------------------------------------------------------------------------------
Further changes for SNMP support
--------------------------------
Sanjay , 22 Jan 1996
--------------------
1. macbrspn.c, setup_this_bridge_values() - 
	stp_class.this_bridge.root_port_id.number = 0x00 to
	stp_class.this_bridge.root_port_id.number = 0x01
   (need to check the effect of this on spanning tree algorithm)
2. macbsnmp.c,snmp_get_or_set_mac_bridge_timed_ushort() -
   modified 'value' calculation to multiply by 100 on a get operation
   and to divide by 100 on a set operation. This is to come within the
   limits as specified by the RFC
3. Modified stuff in macbsnmp.c (USHORT, ULONG problems)
4. Modified VSNMPMIB.H.
5. Modified vmacsnmp.h
6. Added code to macbsnmp.c

10, February, 1996
------------------
1. vmacbsnmp.h - dot1dStpPortState - field 'need_to_increment' set to TRUE.
2. macbrspn.c, macbrmgr.c - converted dot1dStpPortEnable to use TRUE or FALSE
   instead of SNMP_BOOLEAN_ENABLE/DISABLE.
3. macbsnmp.c - converted snmp_get_or_set_stp_port_state() to return SNMP
   type of enabled/disabled values.
4. macbsnmp.c - modified stp_calculate_pointer_to_next_row_in_mib_table()
   to check if sptr_hash_table has been assigned to and to return NULL if not.

1, March, 1996
--------------
1. macbrspn.c -- transmit_configuration() -- included check to simply
   return doing nothing if the port to send on if disabled.
2. macbrtim.c -- mac_bridge_timer() -- included check to skip ports 
   that are disabled when checking timers.
3. macbrspn.c -- initialize_bridge_spanning_tree() -- put in code to not
   init ports that have been set as DISABLED.

8, July, 1996 -- Sanjay
-----------------------
(Changes to support simple bridging in addition to Spanning Tree bridging)

1. macbrspn.c, setup_this_bridge_values() - comment out the forcible
   enabling of spanning tree algorithm so that this field is now set only
   in the nvram code.

/*	stp_class.stp_algorithm_enabled = TRUE; */

	instead of

	stp_class.stp_algorithm_enabled = TRUE; 

2. macbrspn.c, initialize_port() - used to set non-DISABLED ports to
   blocking. Modify to also check the stp_algorithm_enabled variable and
   to set to FORWARDING in such cases.


	if (stp_class.port[port_number].state != DISABLED)
	{
		if (stp_class.stp_algorithm_enabled)
			stp_class.port[port_number].state = BLOCKING;
		else
			stp_class.port[port_number].state = FORWARDING;
	}

		instead of

	if (stp_class.port[port_number].state != DISABLED)
		stp_class.port[port_number].state = BLOCKING;

Srikar, 6 Jan 97
File	:	macbsnmp.c
Function:	get_spanning_tree_mib_variable
a.To return PASS or FAIL depending on whether a good value was used
for set operation after calling function process_stp_table_mib_variable

Srikar, 6 Jan 97
File	:	macbsnmp.c
Function:	process_stp_table_mib_variable
a.Changed the function prototype to include and additional parameter
enum BOOLEAN *eptr_good_value
b.eptr_good_value is set to TRUE or FALSE depending on whether the
function apply_mib_operation_on_current_instance_of_mib_variable
returns PASS or FAIL

Srikar, 6 Jan 97
File	:	macbsnmp.c
Function:	process_stp_scalar_mib_variable
a.changed to return the value returned by fptr_mib_access_function
instead of returning PASS always

Srikar, 6 Jan 97
File	:	macbsnmp.c
Functions:	snmp_get_or_set_mac_bridge_timed_ushort_max_age
		snmp_get_or_set_mac_bridge_timed_ushort_hello_time
		snmp_get_or_set_mac_bridge_timed_ushort_forward_delay
		snmp_get_or_set_stp_priority
		snmp_get_or_set_stp_port_priority
		snmp_get_or_set_stp_port_path_cost
		snmp_get_or_set_tp_aging_time
a.Funcitons are mode to return FAIL on failing range checks

Srikar, 6 Jan 97
File	:	macbsnmp.c
Functions:	snmp_get_or_set_mac_bridge_timed_ushort 
		snmp_get_or_set_mac_bridge_timed_ushort_max_age
		snmp_get_or_set_mac_bridge_timed_ushort_hello_time
		snmp_get_or_set_mac_bridge_timed_ushort_forward_delay
a.Changed to return value on GET_NEXT_OPERATION just as done for
GET_OPERATION, earlier it was neglected

/* chetan 7/4/97 */
   DEFS.H --> FRAME_RELAY has been defined
   If initialization fails FAIL is not returned but PASS
   send_broadcast_packet and send_mac_bridge_completion_routine
   have been changed so that broadcasts occur on all the DLCIs


/* chetan 7/4/97 */
Naveen.P.N. 22/04/1997
In kmacbr.h DEC_LAN_BRIDGE_100 is changed to STP_DEC_LAN_BRIDGE_100.


