@Override
	public void receivePacket(Packet inPacket) throws LowLinkException {
              if(inPacket instanceof IP_packet){
                    if(busy) return;
              
                    IP_packet IPP = (IP_packet) inPacket;
                    if(!NodeProtocolStack.isInternalIP(IPP.getDestIPAddress())){
                      System.out.println("Activating NAT when recieving...");
                      
                      if(IPP instanceof TCP_packet){
                          busy = true;
                          if(externalIP == null){
                              
                              externalIP = IPP.getDestIPAddress();
                              externalPort = ((TCP_packet) IPP).get_destPort();
                              
                              try {
                                Socket NAT = new Socket(externalIP, externalPort);
                                                         
                              
                                NE = null;
                                NE = new ExternalProxyApp(NodeProtocolStack, this, NAT, externalIP, externalPort, core.Simulation.UIDGen++);                              
                                System.out.println("NAT step 2");
                                //addApp(NE, 1);                             
                              
                                ((TCP_packet) IPP).setDestIPAddress(NodeProtocolStack.getIPAddress("eth0"));
                                NodeProtocolStack.recieveTCP_packet((TCP_packet) IPP);                              
                                busy = false;
                                
                              }catch (IOException e) {                                    
                                    e.printStackTrace();
                                    externalIP =  null;
                              }
                              
                          }else{
                            ((TCP_packet) IPP).setDestIPAddress(NodeProtocolStack.getIPAddress("eth0"));
                            NodeProtocolStack.recieveTCP_packet((TCP_packet) IPP);                              
                            busy = false;
                          }     
                          
                          
                      }
                        
                    }else{
                        NodeProtocolStack.receivePacket(inPacket, "unk");
                    }                
                }else{
                    NodeProtocolStack.receivePacket(inPacket, "unk");
                }
     }