public class MyComputation implements Transferable{} public class MyComputation implements Migratable{} public class MyComputation implements Survivable{} public class MyDevice implements MigrationTarget{} public abstract class MigrationHost{} public interface MigrationTarget{ } /** can migrate continuously */ public interface Survivable{ } /** only migrate once */ public interface Migratable{ } //////////////////// SPCL have a 'query' syntax so we can generate a SPCLRequest object easily for the protocol. This allows us to answer access queries as well as allows the administrator to probe his implementation of the policy. So, we have to write 3 things to make this system work: - a PolicyCompiler to translate .spcl to the intermediate form - a PolicyEngine+PolicyLoader that loads the policy and listens for queries - a PolicyClient library so that systems can easily talk to the PolicyEngine (kind of like PAM makes it easy to talk to different backends) and 3 others to demonstrate its power and give implementation examples: - a command interface (very simple one) to the PolicyEngine to load new policy - an example client application (tv/stereo/fridge or 'network client') - an example system application (tv/stereo/fridge or webserver/firewall) can michael do "open" on "fridge" when "time>6.00" during "getting colder cycle"? can 128.59.3.4 do "connect" on "ssh_server"? CAN {principal_list} DO {action} ON {object} WHEN {conditions} DURING {lifecycle}? TELL ME IF SELECT {meta_actions} FROM {principal} WITH {action} WHERE {conditions} DURING {lifecycle};