public Vector getAllNodeInformation(String inNodeName) throws InvalidNodeNameException
	{
		Vector vecNodeInfo = new Vector();
		String strDefaultGateway;
		
		if(nodeTable.containsKey(inNodeName)){
			Node temp = (Node)nodeTable.get(inNodeName);
			if(temp instanceof NetworkLayerDevice)
			{
			NetworkLayerDevice tempNetwork = (NetworkLayerDevice)temp;
			
			strDefaultGateway = tempNetwork.getDefaultGateway();
			if(strDefaultGateway == null)
			{
				strDefaultGateway = "Gateway Not Set";
			}
			
			ArrayList aryInterfaceNamesTemp = tempNetwork.getAllInterfacesNames();
			Collections.sort(aryInterfaceNamesTemp);
			Iterator it = aryInterfaceNamesTemp.iterator();
			
			while(it.hasNext())
			{
				Vector vecInterfaceInfo = new Vector();
				vecInterfaceInfo.add(inNodeName);                                
				vecInterfaceInfo.add(strDefaultGateway);
				String strInterfaceName = (String)it.next();
				vecInterfaceInfo.add(strInterfaceName);
				try{    
                                        vecInterfaceInfo.add(tempNetwork.getIntSType(strInterfaceName));
					vecInterfaceInfo.add(tempNetwork.getMACAddress(strInterfaceName));                                        
					String tempIP = tempNetwork.getIPAddress(strInterfaceName);
					if(tempIP != null)
					{
                                            vecInterfaceInfo.add(tempNetwork.getIPAddress(strInterfaceName));
					}
					else
					{
                                            vecInterfaceInfo.add("IP Address not set");	
					}
					vecInterfaceInfo.add(tempNetwork.getSubnetMask(strInterfaceName));
					NetworkInterface tempNetworkCard = tempNetwork.getNetworkInterface(strInterfaceName);
					vecInterfaceInfo.add(tempNetworkCard.getConnectLinkName());
				}
				
				catch(InvalidNetworkInterfaceNameException e)
				{
					//This should never happen
				}
				
				vecNodeInfo.add(vecInterfaceInfo);
			}
			
			}
			else
			{
				DataLinkLayerDevice tempData = (DataLinkLayerDevice)temp;
				
				
				ArrayList aryInterfaceNamesTemp = tempData.getAllInterfacesNames();
				Collections.sort(aryInterfaceNamesTemp);
				Iterator it = aryInterfaceNamesTemp.iterator();
				
				while(it.hasNext())
				{                                    
					Vector vecInterfaceInfo = new Vector();
					vecInterfaceInfo.add(inNodeName);
                                        String strInterfaceName = (String)it.next();                                        
					try{                                            
                                            vecInterfaceInfo.add("Not Applicable");					
                                            vecInterfaceInfo.add(strInterfaceName);
                                            vecInterfaceInfo.add(tempData.getIntSType(strInterfaceName));
                                            vecInterfaceInfo.add("Not Applicable");
                                            vecInterfaceInfo.add("Not Applicable");
                                            vecInterfaceInfo.add("Not Applicable");
                                            NetworkInterface tempNetworkCard = tempData.getNetworkInterface(strInterfaceName);
                                            vecInterfaceInfo.add(tempNetworkCard.getConnectLinkName());
					}
					
					catch(InvalidNetworkInterfaceNameException e)
					{
						//This should never happen
					}
					vecNodeInfo.add(vecInterfaceInfo);
				}	
					
			}
			
		}
		else{
			throw new InvalidNodeNameException("Node does not exist.");
		}	
		return vecNodeInfo;
	}