protected synchronized boolean makeRoomForPacket()
    {
        Packet pkt;

        int src_outputPort;
        String src_outputPort_str;

        int dst;
        String dst_str;

        boolean isFile = false;
        int glID;
        //String filename;

        /***********
        System.out.println("\n" + super.get_name() + ":(make) Size(): " +
                        size() + " pkts. Time: " + GridSim.clock());
        ************/

        for (int i = 0; i < size() ; i++)
        {
            pkt = (Packet) pktList.get(i);

            if (pkt instanceof FnbNetPacket)
            isFile = ((FnbNetPacket) pkt).isFile();

            int pktID = pkt.getID();

            src_outputPort = ((FnbNetPacket) pkt).getSrcID();
            src_outputPort_str = GridSim.getEntityName(src_outputPort);

            String src_str = src_outputPort_str.substring(7);
            // for example, src_str = SIM_0_User_0


            src_outputPort = ((FnbNetPacket) pkt).getSrcID();
            src_outputPort_str = GridSim.getEntityName(src_outputPort);
            // for example, src_outputPort_str = Output_SIM_0_User_0

            // Check the destination, as I'm not sure if it works like that
            dst = ((FnbNetPacket) pkt).getDestID();
            dst_str = GridSim.getEntityName(dst);

            // We must tell the user, not the other end of the transmission
            int entity;
            if (dst_str.indexOf("User") == -1)
            {
                entity = GridSim.getEntityId(src_str);
            }
            else
            {
                entity = GridSim.getEntityId(dst_str);
            }

            /************* // This works
            // If none of the ends of this packet is the broker or the GIS
            if ((src_outputPort_str.indexOf("Broker") == -1) &&
                (dst_str.indexOf("Broker") == -1) &&
                (src_outputPort_str.indexOf("GIS") == -1) &&
                (dst_str.indexOf("GIS") == -1) ||
                (src_outputPort_str.indexOf("RC") != -1) ||
                (dst_str.indexOf("RC") != -1))
            ***************/


            // if the src and the dest of the packet are not in the whitelist, 
            // then we can drop the pkt
            FnbWhiteList whiteList = FnbWhiteList.getInstance();
            if (!whiteList.checkList(dst) &&
                !whiteList.checkList(src_outputPort))
            {
                // To remove a packet form this queue we have to do some stuff
                // I've copied this from the deque method
                pktList.remove(i);
                if (i == 0)
                {
                    CF = ((Double) timeList.remove(i)).doubleValue();
                }
                else
                {
                    timeList.remove(i);
                }

                // Also, we have to tell the user involved in this transmission
                // that this packet it's been dropped.
                glID = ((FnbNetPacket) pkt).getObjectID();
                if (checkDroppedGlList(glID, entity) == false)
                {
                    //super.send(src_outputPort, GridSimTags.SCHEDULE_NOW,
                    super.sim_schedule(src_outputPort, GridSimTags.SCHEDULE_NOW,
                            GridSimTags.FNB_PACKET_DROPPED, 
                            new FnbDroppedUserObject(entity, glID, isFile));

                    /******
                    System.out.println("\n" + super.get_name() +
                        ":(make) A packet has been dropped, and an ACK has been sent.\n" +
                        "  src.output: " + src_outputPort_str +
                        ". dst: " + dst_str + "\n  Time: " +
                        GridSim.clock() + ". PktID: " + pkt.getID() +". Gl: " + glID);
                    ******/

                }
                /*****
                else
                {
                    System.out.println("\n" + super.get_name() +
                        ":(make) A packet has been dropped.\n" +
                        "  src.output: " + src_outputPort_str +
                        ". dst: " + dst_str +
                        "\n  Time: " + GridSim.clock() + ". PktID: " + pkt.getID() +
                        ". Gl: " + glID);
                   
                }
                *****/

                return true;
            }


        }// for (int i = 0; i < size() ; i++)

        //System.out.println("\n" + super.get_name() +
        //    ":(make) No packet could be dropped.\nTime: " + GridSim.clock() );

        return false;
    }