public boolean match(NetworkFrame frame) {
        System.out.println();
        System.out.println(id);
        /**
         * L2
         */
        if((frame.getVlan() & getVlanMask()) != getVlan()) {
            return false;
        }
        if((frame.getMacDst() & getMacDstMask()) != getMacDst()) {
            return false;
        }
        if((frame.getMacSrc()& getMacSrcMask()) != getMacSrc()) {
            return false;
        }
        if((frame.getEthertype() & getEthertypeMask()) != getEthertype()) {
            return false;
        }
        
        /**
         * L3
         */
        if(frame.getIpProtocol() != getIpProtocol()) {
            return false;
        }
        System.out.print("L3 proto ");
        if((frame.getIp4Dst() & getIp4DstMask()) != getIp4Dst()) {
            return false;
        }
        
        if((frame.getIp4Src() & getIp4SrcMask()) != getIp4Src()) {
            return false;
        }
        
        /**
         * L4
         */
        if((frame.getL4DstPort() & getL4DstPortMask()) != getL4DstPort()) {
            return false;
        }
        if((frame.getL4SrcPort() & getL4SrcPortMask()) != getL4SrcPort()) {
            return false;
        }
        return true;
    }